Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
843 views
in Technique[技术] by (71.8m points)

bash - How can I pass special characters [eg. " or ( or ' ] as arguments to shell script?

I got one error while passing the arguments to outlook_DataParsing.sh:

$ sh outlook_DataParsing.sh delete node doc('/opt/ws40/contacts.xml')//Directory/Contacts/Contact[@id='22222']

and I am reading all the arguments as:

str=$@

The error is following:

-bash: syntax error near unexpected token `('

Can anybody help me?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There are a number of "special" characters in a shell command, including $()[]

Most of these can simply be passed by enclosing the parameter in double quotes

foo "(hello)[]"

This however will not fix the $ sign, as it is intended for variables. You can instead use single quotes to pass a $ sign

foo '$im_not_a_variable'

If all else fails, ANY character can be escaped with a backslash including a space (no quotes needed)

foo (hello)[] $im_not_a_variable

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...