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 このオプションを想定する必要があります。

おすすめ記事