1. ホーム
  2. bash

[解決済み] オプションの入力引数を取るbashスクリプトを書くには?

2022-03-15 20:03:20

質問

スクリプトにオプションの入力を受け付けるようにしたいのですが。

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

#!/bin/bash
somecommand foo

と書いてほしいのですが。

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

解決方法は?

default-value構文を使えばいいんだよ。

somecommand ${1:-foo}

で説明したように、上記の意志は Bash リファレンスマニュアル - 3.5.3 シェルパラメータの展開 [強調]:

パラメータが未設定の場合 またはNULL の場合、単語の展開が代入される。そうでなければ,パラメータの値が代入される。

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

somecommand ${1-foo}

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

コロンを省略すると、パラメータが未設定である場合のみテストが行われます。別の言い方をすれば、コロンが含まれる場合、演算子はパラメータの存在とその値がNULLでないことの両方をテストします。コロンが省略された場合、演算子は存在だけをテストします。