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\'
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?
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"5'"