bash에 대한 스크립트 입력에 매개변수를 전달하는 방법

bash에 대한 스크립트 입력에 매개변수를 전달하는 방법

이제 다음과 같은 줄이 있습니다.

curl -fsSL http://git.io/vvZMn | bash

스크립트를 다운로드하여 표준 입력 파일로 bash에 전달합니다. 추가 매개변수를 사용하여 이 스크립트를 실행하고 싶습니다 print.

어쩌면 이런 게 있지 않을까요?

curl -fsSL http://git.io/vvZMn | bash -- print

그러나 이것은 작동하지 않습니다.

답변1

나는 당신이 찾고 있는 것이 -s옵션이라고 믿습니다. 를 사용하면 -s매개변수를 스크립트에 전달할 수 있습니다.

이를 설명하기 위한 더미 예제는 다음과 같습니다.

$ echo 'echo 1=$1' | bash -s -- Print
1=Print

여기에서 stdin에 제공된 스크립트에 위치 인수가 제공되는 것을 볼 수 있습니다 Print. 스크립트에는 -u UUID매개변수가 필요하며 다음을 포함할 수도 있습니다.

$ echo 'echo arguments=$*' | bash -s -- -u UUID print
arguments=-u UUID print

따라서 귀하의 경우에는 다음과 같습니다.

curl -fsSL http://git.io/vvZMn | bash -s -- print

또는,

curl -fsSL http://git.io/vvZMn | bash -s -- -u UUID print

Stephen Harris가 지적했듯이 스크립트를 다운로드하고 보이지 않게 실행하는 것은 보안 문제입니다.

답변2

시스템에 있는 경우 다음을 /dev/stdin사용할 수 있습니다.

$ echo 'echo 1=$1' | bash /dev/stdin print
1=print

하다아니요이 작업을 수행:

$ echo 'echo 1=$1' | bash /dev/stdin -- print
1=--

를 사용하려면 --다음을 수행하십시오.

$ echo 'echo 1=$1' | bash -- /dev/stdin print
1=print

관련 정보