シェルスクリプトを作成していますが、2つの必須パラメータと1つのオプションパラメータを受け入れる必要があります。どうやって確認しますか?私が見たほとんどのスクリプトでは、オプションのパラメータが必須パラメータの前に渡されます。たとえば、次のようになります。
cut -c2 test.txt
しかし、私の考えでは、このパターンをスクリプトで確認するのは複雑なので、3番目のパラメータをオプションとして扱うことをお勧めします。
ベストアンサー1
最後のオプションのパラメータに同意すると、次のことができます。
foo=$1
bar=$2
baz=${3:-default value}
これにより、最初の2つのパラメータが$foo
sumに保存されます$bar
。 3番目の引数が指定された場合は保存され、$baz
それ以外の場合はデフォルト値になりますdefault value
。 3番目の変数が空であることを確認することもできます。
if [ -z "$3" ]; then
# Code for the case that the user didn't pass a third argument
fi
最初からデフォルト値を使用したい場合は、最も簡単な方法は$#
。
case $# in
2)
# Put commands here for when the user passes two arguments
# Could just be setting variables like above, or anything else you need
;;
3)
# Put commands here for when the user passes three arguments
;;
*)
echo "Wrong number of arguments passed"
exit 1;;
esac
エラーチェックが必要な場合は、$#
どちらの場合もオープンが正常に機能します。スクリプトが例のようにgetoptスタイルパラメータを使用している場合は、これを使用できますcut
。このスタックオーバーフローの質問より多くの情報を知りたい場合