Bashスクリプトにコマンドライン引数またはSTDINが提供されていないかどうかを確認する方法は?
私の言葉は、次のように実行する場合です。
#> ./myscript.sh
... Show message "No data provided..." and exit
または:
#> ./myscript.sh filename.txt
... Read from filename.txt
または:
#> ./myscript.sh < filename.txt**
... Read from STDIN
ベストアンサー1
これはあなたの要件を満たしていますか?
#!/bin/sh
if test -n "$1"; then
echo "Read from $1";
elif test ! -t 0; then
echo "Read from stdin"
else
echo "No data provided..."
fi
主なヒントは次のとおりです。
パラメータがあるかどうかは、
test -n $1
最初のパラメータが存在することを確認することによって実行されます。次に、
stdin
端末で開いていないことを確認します(ファイルにパイプされるため)。test ! -t 0
ファイル記述子0(別名stdin
)が開いていないことを確認してください。最後に、他のすべては最後のカテゴリ(
No data provided...
)に属します。