Soy nuevo en la programación bash. He leído dos guías buenas y largas, pero hicieron un desastre en mi cabeza sobre operadores y palabras clave.
¿Cuáles son más comunes y ampliamente utilizados? No sé cuándo usar qué y por qué.
test,[[ ]]O[ ]incluso(( ))$((exp))o$[exp]-gto>,geo>=etc.- cuándo usar
<y />o( )cuando tenemos que escapar con\:\<\(etc. ==o=(comparaciones de cadenas)
Sé que las diferencias básicas entre [y [[otras preguntas son un misterio para mí.
Gracias de antemano
command-line
bash
programming
scripts
MikeD
fuente
fuente

Respuestas:
testes un shell incorporado que (obviamente) prueba alguna condición dada. Algunos proyectiles más viejos necesitan un comando especial. Así que también encontrarás un programa en/usr/bin/test.[También es un programa para probar alguna condición. Este software también necesita un soporte de cierre y puede encontrarlo en/usr/bin/[.[[…]]es una alternativa atesty[. Fue desarrollado para el shell Korn (ksh). Pero también lo encuentra en las versiones Bash mayores de 2 y en el Z Shell. Los corchetes dobles tienen algunas características ingeniosas:-a(AND) u-o(OR) puede usar&&o||.=puede hacer mucho más.((…))es equivalente alet. Entonces básicamente((expression))es lo mismo quelet "expression". Sin embargo, conletusted puede usar más de una expresión, pero las llaves dobles solo permiten una expresión.$((…))(y también$[…]) hace algunos cálculos. Tu shell intenta calcular la expresión dentro de las llaves y reemplaza la expresión con el resultado. Asíecho $((1+1))lleva aecho 2. Entonces tus conchas imprimen el número 2.Cada vez que desee comparar dos números, debe usar la opción con un guión y dos letras (
-ge,-ltetc.). Si desea comparar cadenas, debe usar=o!=.Su pregunta sobre escapar es bastante difícil de responder. Porque depende del software que uses además del shell. Es decir,
grepygrep -Enecesita escapar diferente. Este es también el caso consed,awky otros. Entonces, la mejor opción es echar un vistazo a la página de manual. Después de un tiempo te acostumbras y sabes cuándo usar el escape.fuente
if [ 2 -gt 1 ]; …es más común, porque lo veo más a menudo en los scripts de shell y, hasta donde sé, es compatible con POSIX.