다른 스크립트에서 생성된 스크립트에 인수를 전달하는 방법

다른 스크립트에서 생성된 스크립트에 인수를 전달하는 방법

다음과 같은 시나리오가 있습니다.

ID를 사용하고 데이터베이스에서 일부 매개변수를 조회하는 Perl 스크립트가 있습니다. look_up_args.pl 234다음이 인쇄되었다고 가정하자abc 123 "something with spaces"

script.sh다음을 수행하는 또 다른 쉘 스크립트가 있습니다

some_command --param1 $1 --param2 $2 --par3 "$3" ...

내가 하고 싶은 것은 매개변수를 사용하여 스크립트를 호출하는 것입니다.

나는 다음 2가지 방법을 시도했다.

./script.sh `./look_up_args.pl 234`
./script.sh $(./look_up_args.pl 234)

여전히 를 실행할 때 script.sh마다 include만으로 스크립트가 실패하는 것 $3같습니다 . "something"어떤 형태의 쉘 확장 등도 수행하지 않고 인용된 문자열을 전달하는 방법을 찾고 있습니다. 세 번째 매개변수에는 다른 특수 bash 문자가 포함될 수 있지만 항상 인용됩니다.

답변1

나는 이것을 권장하지 않지만 다음을 시도하십시오.

eval "./script.sh $(./look_up_args.pl 234)"

이는 작동하지만 출력에서 ​​발생하는 모든 것을 eval평가하므로 코드 삽입에 취약하다는 점 을 명심하십시오 .look_up_args.pl

더 나은 옵션은 @thrig가 의견에서 제안한 것입니다. 표준화된 데이터 형식을 사용하여 도구 간에 데이터를 전달합니다. 개행으로 구분된 문자열도 셸 스타일 처리 파이프라인에 적합한 형식입니다.

관련 정보