オプションの入力引数を取る bash スクリプトの書き方は? 質問する

オプションの入力引数を取る bash スクリプトの書き方は? 質問する

スクリプトにオプションの入力を行えるようにしたいのですが、

例えば、現在私のスクリプトは

#!/bin/bash
somecommand foo

しかし、私はこう言いたいのです。

#!/bin/bash
somecommand  [ if $1 exists, $1, else, foo ]

ベストアンサー1

デフォルト値の構文を使用できます。

somecommand ${1:-foo}

上記は、Bash リファレンスマニュアル - 3.5.3 シェルパラメータの展開[強調は筆者による]:

パラメータが設定されていないか null の場合、 word の展開が置換されます。それ以外の場合は、パラメータの値が置換されます。

パラメータが設定されていない場合にのみデフォルト値を置き換えたい場合(ただし、null の場合、つまり空の文字列の場合は置き換えたくない場合)、代わりに次の構文を使用します。

somecommand ${1-foo}

再びBash リファレンスマニュアル - 3.5.3 シェルパラメータの展開:

コロンを省略すると、設定されていないパラメータのみがテストされます。言い換えると、コロンが含まれている場合、演算子はパラメータの存在とその値が null でないことをテストします。コロンが省略されている場合、演算子は存在のみをテストします。

おすすめ記事