bash -c 또는 zsh -c에 따옴표와 전체 문자열을 전달하세요.

bash -c 또는 zsh -c에 따옴표와 전체 문자열을 전달하세요.

system(some_command)이것은 내가 Perl에서 호출할 때 호출 some_command됩니다 /bin/sh. 또는 some_command와 같은 다른 셸에서 실행 되기를 원합니다 .bashzsh

zsh명령을 실행하는 bash한 가지 방법 sh은 호출하는 것입니다 zsh -c '<command>'. 아이디어는 명령을 에 전달하는 것입니다 system(). 그러나 이를 위해서는 주위에 작은따옴표가 필요합니다 <command>.

하지만 <command>이미 따옴표가 있으면 어떻게 될까요? 어떻게 전달합니까 zsh -c? 예를 들어:

find . -name 'something*.txt'

위의 예는 단지 설명을 위한 것입니다. 또 다른 예는 bashor 에서 호출하려는 바이너리 에 따옴표가 있는 항목을 전달해야 하는 경우입니다 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"'};

관련 정보