Digamos que eu precise usar aspas para encapsular a saída do subshell, como:
DATA="$(cat file.hex | xxd -r)"
Mas preciso aninhar esse tipo de coisa como:
DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"
Não posso usar aspas simples porque elas não expandem variáveis que estão dentro delas. O escape de aspas não funciona porque são apenas tratados como texto passivo.
Como eu manejo isso?
bash
quoting
command-substitution
Melab
fonte
fonte
DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
?Respostas:
Você não precisa escapar das aspas dentro de um subshell, pois o shell atual não as interpreta (na verdade, não interpreta nada de
$(
para)
), e o subshell não conhece nenhuma citação acima.Citar um subshell na atribuição de variáveis também é desnecessário, para obter mais informações, consulte
man bash
.fonte
Você não precisa escapar das aspas aninhadas dentro. Eles são analisados corretamente, surpreendentemente!
fonte