パラメータを使用して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 ...
渡す引数を区切るには、-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
だけでなく、あらゆるPOSIXシェルで機能します。 susv4 から:
-s
標準入力からコマンドを読み取ります。オペランドがなく、
-c
オプションが指定されていない場合、-s
オプションが想定されます。