Cotações aninhadas em subshells

8

Digamos que eu tenha que usar aspas para encapsular a saída da subshell como:

DATA="$(cat file.hex | xxd -r)"

Mas eu preciso aninhar esse tipo de coisa como:

DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"

Eu não posso usar aspas simples porque elas não expandem as variáveis que estão dentro delas. As citações de escape não funcionam porque são apenas tratadas como texto passivo.

Como faço para lidar com isso?

    
por Melab 08.06.2015 / 20:10

2 respostas

12

Você não precisa escapar as aspas dentro de um subshell, já que o shell atual não as interpreta (ele não interpreta nada de $( to ) , na verdade) , e o subshell não sabe sobre as citações acima.

Citar um subshell na atribuição de variáveis também é desnecessário, para mais informações, consulte man bash .

    
por 08.06.2015 / 20:24
5

Você não precisa escapar das citações aninhadas. Eles são analisados corretamente, surpreendentemente!

DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
    
por 16.02.2017 / 19:25