我有一个接受我希望能够作为linux服务运行的参数的脚本。 从/etc/ini.t/deploy到它的符号链接到实际的脚本。
如果我跑
/etc/init.d/deploy --machine NAME --message "Hello World"
一切正常,脚本会收到4个参数:
'--machine',
'NAME',
'--message',
'Hello World'
另一方面,如果我将其作为
运行/sbin/service deploy --machine NAME --message "Hello World"
然后脚本接收5个参数:
'--machine',
'NAME',
'--message',
'Hello',
'World'
Perl和Python都发生了同样的事情,因此据我所知,它是在分割空间后传递参数的“服务”。我可以做些什么来使“服务”与直接调用时的工作方式相同?
答案 0 :(得分:2)
这是传递参数的问题。显然,某些事情不会在你的背景下逐字传递,而是可以说是解释性的。
您可以使用两次引用内容的解决方法:
/sbin/service deploy --machine NAME --message '"Hello World"'
在许多情况下,这解决了这个问题。
更通用的方法是使用现代printf "%q"
的{{1}}:
bash
这会生成给定字符串的引用版本。