将引号和完整字符串传递给 bash -c 或 zsh -c

Ame*_*ina 3 bash zsh perl

当我在Perl和我打电话system(some_command),这将调用some_command/bin/sh。我希望它改为some_command在另一个 shell 中运行,例如bashor zsh

在 onzshbashfrom上运行命令的一种方法sh是调用zsh -c '<command>'. 这个想法是将它传递给system(),但这需要在 周围使用单引号<command>

但是如果里面<command>已经有引号怎么办?我如何将其传递给zsh -c?例如:

find . -name 'something*.txt'
Run Code Online (Sandbox Code Playgroud)

上面的示例仅用于说明目的。另一个例子是当我需要将带引号的东西传递给我想从中调用的二进制文件时bashzsh

cjm*_*cjm 9

使用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)