当我在Perl和我打电话system(some_command)
,这将调用some_command
上/bin/sh
。我希望它改为some_command
在另一个 shell 中运行,例如bash
or zsh
。
在 onzsh
或bash
from上运行命令的一种方法sh
是调用zsh -c '<command>'
. 这个想法是将它传递给system()
,但这需要在 周围使用单引号<command>
。
但是如果里面<command>
已经有引号怎么办?我如何将其传递给zsh -c
?例如:
find . -name 'something*.txt'
Run Code Online (Sandbox Code Playgroud)
上面的示例仅用于说明目的。另一个例子是当我需要将带引号的东西传递给我想从中调用的二进制文件时bash
或zsh
。
使用system LIST
,它不调用外壳。IE
system('/bin/bash', '-c', $your_command);
Run Code Online (Sandbox Code Playgroud)
代替
system("/bin/bash -c '$your_command'");
Run Code Online (Sandbox Code Playgroud)