porque grep '\ ;.' expandir para grep '\' '\'. '' '' quando executado em ssh?

1
$cat test.sh
ssh HOST -l root -o StrictHostKeyChecking=no -q "/bin/bash -l -c /bin/env | grep -w PATH | grep '\;.'"

$bash -x test.sh
+ ssh HOST -l root -o StrictHostKeyChecking=no -q '/bin/bash -l -c /bin/env | grep -w PATH | grep '\''\;.'\'''
    
por trekkerboy 19.12.2014 / 14:04

1 resposta

2

Não tem nada a ver com o SSH. O argumento -x para bash é o comando set do bash, que exibe os argumentos do comando em formato expandido. É por isso que as strings entre aspas duplas são exibidas como strings entre aspas simples.

$ cat test.sh
echo "here are 'some single quotes' inside double quotes"

$ bash -x test.sh
+ echo 'here are '\''some single quotes'\'' inside double quotes'
here are 'some single quotes' inside double quotes
    
por 19.12.2014 / 14:54