Passagem de argumentos com aspas e aspas duplas para bash script

11

Neste momento eu tenho:

#!/bin/bash
screen -p 'ScreenName' -x eval 'stuff '"'"$@"'"'\015'
echo eval 'stuff '"'"$@"'"'\015'

Mas quando eu chamo meu script como:

# script.sh asd "asd" 'asd'

meus argumentos passados ​​como: asd asd asd

e eu recebo saída:

eval stuff 'asd asd asd'\015

Eu exceto um: asd "asd" 'asd'

Como posso alterar meu script para passar toda a linha de argumentos com todas as aspas?

Arthur Halma
fonte

Respostas:

7

Seu shell não está passando as aspas para o script. Se você deseja passar aspas, escape-as com uma barra invertida:

# ./script.sh asd \"asd\" \'asd\'
teppic
fonte
1
Não é o que eu quero, mas de qualquer maneira não há outras soluções (passei a noite inteira pesquisando).
Arthur Halma
qual é a solução
Jason
4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
Derek
fonte