Passando argumentos com aspas e doublequotes para bash script

8

Neste momento eu tenho:

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

Mas quando eu chamo meu script como:

# script.sh asd "asd" 'asd'

meus argumentos foram transmitidos como: asd asd asd

e recebo a saída:

eval stuff 'asd asd asd'5

Eu exceto a: asd "asd" 'asd'

Como posso alterar meu script para passar a linha de argumentos inteiros com todas as citações?

    
por Arthur Halma 02.09.2012 / 21:49

2 respostas

7

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

# ./script.sh asd \"asd\" \'asd\'
    
por 03.09.2012 / 00:32
4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"5'"
    
por 04.11.2012 / 17:39