At this moment I have:

screen -p 'ScreenName' -x eval 'stuff '"'"$@"'"'\015'
echo eval 'stuff '"'"$@"'"'\015'

But when I call my script as:

# script.sh asd "asd" 'asd'

my arguments passed as: asd asd asd

and I get output:

eval stuff 'asd asd asd'\015

I except a: asd "asd" 'asd'

How I can change my script to pass whole arguments line with all quotes?


Your shell is not passing the quotes through to the script. If you want to pass quotes, escape them with a backslash:

# ./script.sh asd \"asd\" \'asd\'
  • 1
    It's not what I want, but anyway there are no other solutions (spent whole night searching). – Arthur Halma Sep 3 '12 at 6:50
  • what is the solution – Jason Aug 21 '18 at 20:57
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.