O me perdí un poco de reacción o la reacción no parece funcionar con demasiados bucles de citas del programador.
$ echo "hello1-`echo hello2-\`echo hello3-\`echo hello4\`\``"
hello1-hello2-hello3-echo hello4
Querido
hello1-hello2-hello3-hello4-hello5-hello6-...
deprecated
, por tanto, útiles$(cmd)
.Respuestas:
Utilice en su
$(commands)
lugar:$(commands)
hace lo mismo que las comillas invertidas, pero puede anidarlas.También te pueden interesar las ampliaciones de la gama Bash:
fuente
si insiste en usar comillas invertidas, se podría hacer lo siguiente
tienes que poner barras invertidas,
\\ \\\\ \\\\\\\\
por 2x y así sucesivamente, es muy feo, úsalo$(commands)
como se sugiere.fuente
Cada vez que desee evaluar un comando, utilice
command substitution
:Siempre que desee evaluar una expresión aritmética, utilice
expression substitution
:Puede anidar estos de esta manera:
Digamos que file1.txt tiene 30 líneas de largo y file2.txt tiene 10 líneas, entonces puedes evaluar una expresión como esta:
que daría como resultado 20 (la diferencia en el número de líneas entre dos archivos).
fuente
Es mucho más fácil si usa la
$(cmd)
sintaxis de sustitución de comandos de bash , que es mucho más fácil de anidar:fuente
A veces, el anidamiento de comillas invertidas se puede sustituir por
xargs
y tuberíasLos inconvenientes de esta solución son:
Todos los argumentos se separan por espacios (se pueden resolver con
tr
):Vamos a mostrar un caso de uso real.
Los siguientes comandos funcionan en bash, pero no en tcsh (la anidación de comillas inversas no se maneja muy bien en tcsh)
Pueden sustituirse por
fuente