매개변수를 사용하여 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
이 옵션을 가정해야 합니다.