filesystem bash shell unix quoting

bash - filesystem - shell function



Cómo anidar correctamente los bastones de Bash (4)

O me perdí un poco de backlash o backlash no parece funcionar con demasiada programación-quote-looping.

$ echo "hello1-`echo hello2-/`echo hello3-/`echo hello4/`/``" hello1-hello2-hello3-echo hello4

Querido

hello1-hello2-hello3-hello4-hello5-hello6-...


Cada vez que desee evaluar un comando, use la command substitution :

$(command)

Siempre que desee evaluar una expresión aritmética, use la expression substitution :

$((expr))

Puedes anidar esto como este:

Digamos que file1.txt tiene 30 líneas de longitud y file2.txt tiene 10 líneas, de lo que puede evaluar una expresión como esta:

$(( $(wc -l file1.txt) - $(wc -l file2.txt) ))

que produciría 20 (la diferencia en el número de líneas entre dos archivos).


Es mucho más fácil si usas la sintaxis de sustitución del comando bash''s $(cmd) , que es mucho más amigable para ser anidado:

$ echo "hello1-$(echo hello2-$(echo hello3-$(echo hello4)))" hello1-hello2-hello3-hello4


Use $(commands) lugar:

$ echo "hello1-$(echo hello2-$(echo hello3-$(echo hello4)))" hello1-hello2-hello3-hello4

$(commands) hace lo mismo que los backticks, pero puede anidarlos.

También le pueden interesar las expansiones de la gama Bash:

echo hello{1..10} hello1 hello2 hello3 hello4 hello5 hello6 hello7 hello8 hello9 hello10


si insistes en usar los apoyos, se podría hacer lo siguiente

$ echo "hello1-`echo hello2-/`echo hello3-///`echo hello4///`/``"

tienes que poner barras invertidas, // //// //////// .