将带空格的参数传递给linux服务

时间:2013-11-06 09:31:05

标签: python linux perl

我有一个接受我希望能够作为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都发生了同样的事情,因此据我所知,它是在分割空间后传递参数的“服务”。我可以做些什么来使“服务”与直接调用时的工作方式相同?

1 个答案:

答案 0 :(得分:2)

这是传递参数的问题。显然,某些事情不会在你的背景下逐字传递,而是可以说是解释性的。

您可以使用两次引用内容的解决方法:

/sbin/service deploy  --machine NAME --message '"Hello World"'

在许多情况下,这解决了这个问题。

更通用的方法是使用现代printf "%q"的{​​{1}}:

bash

这会生成给定字符串的引用版本。