system(some_command)
이것은 내가 Perl에서 호출할 때 호출 some_command
됩니다 /bin/sh
. 또는 some_command
와 같은 다른 셸에서 실행 되기를 원합니다 .bash
zsh
zsh
명령을 실행하는 bash
한 가지 방법 sh
은 호출하는 것입니다 zsh -c '<command>'
. 아이디어는 명령을 에 전달하는 것입니다 system()
. 그러나 이를 위해서는 주위에 작은따옴표가 필요합니다 <command>
.
하지만 <command>
이미 따옴표가 있으면 어떻게 될까요? 어떻게 전달합니까 zsh -c
? 예를 들어:
find . -name 'something*.txt'
위의 예는 단지 설명을 위한 것입니다. 또 다른 예는 bash
or 에서 호출하려는 바이너리 에 따옴표가 있는 항목을 전달해야 하는 경우입니다 zsh
.
답변1
사용system LIST
, 쉘을 호출하지 않습니다. 즉
system('/bin/bash', '-c', $your_command);
바꾸다
system("/bin/bash -c '$your_command'");
답변2
Perl을 사용하고 있기 때문에작은따옴표와 큰따옴표로 제한되지 않습니다.:
system q{bash -c 'echo "Hello World"'};