パラメータをシェルに渡し、パラメータが空でないことを確認する方法

パラメータをシェルに渡し、パラメータが空でないことを確認する方法

get.sh日付を次の変数に設定する小さなコードがあります。

date=$(date +%b%d%y)

get.shこれで、カスタム日付パラメータを[いいね]に渡すことができるようになります。

./get.sh --date=2019-01-01

get.shでは、パラメータが送信されたことを確認し、パラメータをそのままにするのではなく、送信されていない場合はパラメータを取得できます。

if ( isset( dateFromCli ) )
date = datefromCLi
else
date=$(date +%b%d%y

答え1

Bashのマニュアルページの「特殊パラメータ」を参照してください。簡単に言えば、テストできるはずです。${#}提供されたコマンドライン引数の数を確認し、${1}${2}${3}、...個々のパラメータ値を使用します。

答え2

特定の問題では、Bashを使用しても機能し、設定を省略してコードを少し短くすることができますif

currentDate=${dateFromCLI-+%b%d%y}

等号の右側の式は、パラメータ拡張の特殊な形式です。一般的な形式は次のとおりです。

${variableName-"default value"}

その名前の変数が定義されると、variableName構成${}全体がその変数の値に展開されます。

-ただし、定義されていない場合、構文はリテラルハイフン()の右側のデフォルト値に展開されます。変数は、以前に割り当てられていて後で設定解除されていない場合は定義されたと見なされます。 null が割り当てられていても定義されます。

以前にNULL値を設定した場合は、dateFromCLI同じ拡張スタイルを使用できますが、-これを:-。この場合、名前付き変数が定義されているがnull値(空の文字列)がある場合は、デフォルトも選択されます。

${variableName:-"default value"}

引用:GNU Bashリファレンスマニュアル:シェルパラメータ拡張

関連情報