Ou perdi alguma folga ou a reação não parece funcionar com muito looping de citações do programador.
$ echo "hello1-`echo hello2-\`echo hello3-\`echo hello4\`\``"
hello1-hello2-hello3-echo hello4
Procurado
hello1-hello2-hello3-hello4-hello5-hello6-...
deprecated
, portanto, use$(cmd)
.Respostas:
Use em seu
$(commands)
lugar:$(commands)
faz a mesma coisa que crases, mas você pode aninhá-los.Você também pode estar interessado nas expansões do intervalo Bash:
fonte
se você insiste em usar crases, o seguinte pode ser feito
tem que colocar barras invertidas,
\\ \\\\ \\\\\\\\
de 2x e assim por diante, é muito feio, use$(commands)
como sugerido.fonte
Sempre que você quiser avaliar um comando, use
command substitution
:Sempre que quiser avaliar uma expressão aritmética, use
expression substitution
:Você pode aninhar assim:
Digamos que file1.txt tenha 30 linhas e file2.txt tenha 10 linhas, então você pode avaliar uma expressão como esta:
que produziria 20 (a diferença no número de linhas entre dois arquivos).
fonte
É muito mais fácil se você usar a
$(cmd)
sintaxe de substituição de comando do bash , que é muito mais fácil de ser aninhada:fonte
Às vezes, o aninhamento de crase pode ser substituído por
xargs
e tubosAs desvantagens desta solução são:
Todos os argumentos se tornam separados por espaço (solucionável com
tr
):Vamos mostrar um caso de uso real.
Os comandos a seguir funcionam em bash, mas não em tcsh (aninhamento de crase não é muito bem tratado em tcsh)
Eles podem ser substituídos por
fonte