如何传递带有特殊字符的参数来调用shell脚本
使用所需参数调用 .sh(shell 脚本),如下所示:-
sh home/example.sh --context_param dbUserName=username --context_param dbPassword=exam!ple##### --context_param resultDate=2017-01-13
使用参数 dbUsername 和密码调用 example.sh,但出现以下错误:-
-bash: !ple#####: 未找到事件
我认为特殊字符限制了要执行的命令。那么我必须如何传递特殊字符。任何帮助都将非常重要。
Calling .sh(shell script) with the required parameters as below :-
sh home/example.sh --context_param dbUserName=username --context_param dbPassword=exam!ple##### --context_param resultDate=2017-01-13
calling example.sh with paramters dbUsername and password but getting following error:-
-bash: !ple#####: event not found
I think special characters restrict the command to execute. Then how i have to pass the special characters. Any help will be appreciable.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将行更改
为,
以避免在
bash
中对!
(历史扩展)进行特殊处理,来自
QUOTINGman bash
代码>小节,历史扩展
下有更多内容另外,最好引用所有
名称-值
对,以防止 shell 进行分词。关于分词,来自
man
页面,Change the line,
to,
to avoid
!
(history-expansion) being treated specially inbash
From
man bash
underQUOTING
sub-section,more under
HISTORY EXPANSION
Also, it is a good practice to quote all your
name-value
pairs to prevent Word-splitting done by shell.About word-splitting, from the
man
page,像这样通过:
测试:
Pass it like this:
Test:
您可以执行以下两件事:
用反斜杠转义每个特殊符号
单引号整个参数。
来自
man bash
You can do the following two things:
Escape every single special symbol with a backslash
Singlequote the entire argument.
From
man bash