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?

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\'

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'"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.