我怎样才能传递特殊字符[例如."或(或']作为shell脚本的参数?

use*_*425 3 bash shell command-line-arguments

传递参数时遇到一个错误outlook_DataParsing.sh:

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

我正在阅读所有论点:

str=$@
Run Code Online (Sandbox Code Playgroud)

错误如下:

-bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

有谁能够帮我?

And*_*ock 5

shell命令中有许多"特殊"字符,包括$()[]

其中大多数可以简单地通过用双引号括起参数来传递

foo "(hello)[]"
Run Code Online (Sandbox Code Playgroud)

然而,这不会修复$符号,因为它是用于变量的.您可以改为使用单引号传递$符号

foo '$im_not_a_variable'
Run Code Online (Sandbox Code Playgroud)

如果所有其他方法都失败了,任何字符都可以使用反斜杠转义\包括空格(不需要引号)

foo \(hello\)\[\]\ \$im_not_a_variable
Run Code Online (Sandbox Code Playgroud)