Linux 如何在命令内部编写命令

Linux 如何在命令内部编写命令,linux,perl,unix,Linux,Perl,Unix,我在perl中使用系统命令来执行su命令,如下所示 system("su -"); 以上命令工作正常 但如果我的命令是这样的 su -c "echo hello" 那么如何将该命令嵌入到perl的系统命令中呢 您需要简单的引号转义,或者使用不同的引号集: system('su -c "echo hello"'); 或者通过“转义”引用本身: system("su -c \"echo hello\""); 或者作为单个参数,如mu太短指出: system("su", "-c", "echo

我在perl中使用系统命令来执行su命令,如下所示

system("su -");
以上命令工作正常

但如果我的命令是这样的

su -c "echo hello"

那么如何将该命令嵌入到perl的系统命令中呢

您需要简单的引号转义,或者使用不同的引号集:

system('su -c "echo hello"');
或者通过“转义”引用本身:

system("su -c \"echo hello\"");
或者作为单个参数,如
mu太短
指出:

system("su", "-c", "echo hello");
可以使用列表而不是单个字符串:

系统列表
系统程序列表

[…]请注意,参数处理根据参数的数量而变化。如果列表中有多个参数,或者列表是一个具有多个值的数组,则使用列表其余部分提供的参数启动列表第一个元素提供的程序

因此,您可以通过以下方式避免嵌套报价问题:

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

这是比较安全的路线。它不需要一个外壳。