bash 스크립트를 bash로 파이프할 때 매개변수를 설정하는 방법

bash 스크립트를 bash로 파이프할 때 매개변수를 설정하는 방법

매개변수를 사용하여 bash 스크립트를 실행하는 방법:

./foo.sh a b c

압축된 경우(예 xz:

 xzcat foo.sh | bash <<how_to_supply_here_parameters?>>

특정 사용 사례:

매우 큰 파일을 생성 rmlint.sh하고 압축하여 저장했습니다.

time rmlint -o sh:stdout -c sh:hardlink|tee >( xz > rmlint.sh.xz )

그래서 나는 보통

./rmlint.sh -d -x -p

그러나 파일이 너무 커서 압축을 풀 수 없습니다. 그래서 나는 그것을 bash에 파이프하여 동일한 작업을 수행하고 싶습니다.

xzcat rmlint.sh.xz | bash ...

답변1

-s옵션을 사용하여 --전달할 매개변수를 구분해야 합니다.

echo 'echo "$@"' | sh -s 3 4 5

echo 'printf "{%s}" "$0"; printf " {%s}" "$@"; echo' |
    sh -s -- -d -x -p --foo=bar
{sh} {-d} {-x} {-p} {--foo=bar}

bash이는 .from 뿐만 아니라 모든 POSIX 쉘에서 작동합니다.수스 바이러스 4:

-s 표준 입력에서 명령을 읽습니다.

피연산자가 없고 -c옵션이 지정되지 않은 경우 -s 이 옵션을 가정해야 합니다.

관련 정보