当我在 Perl 中调用 时system(some_command)
,这会调用some_command
on /bin/sh
。我希望它some_command
在另一个 shell 中运行,例如bash
或zsh
。
zsh
在其上运行命令或bash
从中运行命令的一种方法sh
是调用zsh -c '<command>'
.想法是将其传递给system()
,但这需要在 周围使用单引号<command>
。
但如果<command>
其中已经有引号怎么办?我如何将其传递给zsh -c
?例如:
find . -name 'something*.txt'
上面的例子仅用于说明目的。另一个例子是当我需要将带有引号的内容传递给我想要从bash
or调用的二进制文件时zsh
。
答案1
使用system LIST
,它不调用 shell。 IE
system('/bin/bash', '-c', $your_command);
代替
system("/bin/bash -c '$your_command'");
答案2
既然你使用 Perl,你不限于单引号和双引号:
system q{bash -c 'echo "Hello World"'};