コマンドライン引数がなく、STDINが空であることを確認してください。

コマンドライン引数がなく、STDINが空であることを確認してください。

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...)に属します。

おすすめ記事