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, // //// ////////
.