다음 시나리오가 있습니다.
ID를 가져와 DB에서 몇 가지 인수를 찾는 Perl 스크립트가 있습니다. 말하자 look_up_args.pl 234
다음을 인쇄합니다abc 123 "something with spaces"
script.sh
다음을 수행하는 다른 셸 스크립트 가 있습니다.
some_command --param1 $1 --param2 $2 --par3 "$3" ...
내가하려는 것은 인수로 스크립트를 호출하는 것입니다.
다음 두 가지 방법을 시도했습니다
./script.sh `./look_up_args.pl 234`
./script.sh $(./look_up_args.pl 234)
나는를 실행 할 때마다 여전히 script.sh
, $3
만 포함 된 것으로 보인다 "something"
내 스크립트가 실패하는 원인. 셸 확장 / 등의 어떤 형태로든 인용 된 문자열을 전달하려고합니다. 세 번째 매개 변수에는 다른 특수 bash 문자가 포함될 수 있지만 항상 인용됩니다.
나는 이것을 권장하지 않지만 시도해보십시오.
eval "./script.sh $(./look_up_args.pl 234)"
이것은 작동하지만 출력에 발생하는 eval
모든 것을 평가 look_up_args.pl
하므로 코드 삽입에 취약한 상태가됩니다.
더 나은 옵션은 @thrig가 주석에서 제안한 것입니다. 표준화 된 데이터 형식을 사용하여 도구간에 데이터를 전달합니다. 줄 바꿈으로 구분 된 문자열도 셸 스타일 처리 파이프 라인에 적합한 형식입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다