如何在命令内编写命令

时间:2012-03-06 05:55:27

标签: linux perl unix

我在perl中使用system命令来执行这样的su命令

system("su -");

以上命令工作正常..

但如果我的命令是这个

su -c "echo hello"

然后我如何将此命令嵌入到perl的系统命令中?

2 个答案:

答案 0 :(得分:6)

system可以使用列表而不是单个字符串:

  

系统列表
  系统计划列表

     

[...]请注意,参数处理因参数的数量而异。如果LIST中有多个参数,或者LIST是一个具有多个值的数组,则启动由列表的第一个元素给出的程序,其中包含列表其余部分给出的参数。

所以你可以避免嵌套引用问题:

system('su', '-c', 'echo hello')

答案 1 :(得分:3)

您可以通过使用不同的报价集来简单地引用转义:

system('su -c "echo hello"');

或者通过“转义”引号本身:

system("su -c \"echo hello\"");

或者作为个别参数,如mu is too short所指出:

system("su", "-c", "echo hello");