bashで変数を簡単に制御するための演算子
bashで変数を簡単に制御するための演算子「:-」「:=」「:+」「:?」について紹介します。
1.基本
次のサンプルを実行すると、変数nameに設定した「foo」を出力します。
#!/bin/bash
name=foo
echo ${name}
ですが、次のように変数nameに値が設定されていない場合、空の文字列が出力されてしまいます。
#!/bin/bash
echo ${name}
出力する前に、次のようにif文で空の判定をすれば代替文字列を出力するといった制御が可能です(if文で変数nameをダブルクォーテーションで括っているのは、変数nameがnullの場合を考慮しているためです)。
if [ "${name}" != "" ]; then
echo ${name}
else
echo foo
fi
が、bashではより簡単に制御するための演算子が用意されています。
2.変数に値が設定されていない場合にデフォルト値を使う演算子「:-」
変数に値が設定されていない、またはnullの場合にデフォルト値を使うには、「:-」を利用します。
#!/bin/bash
echo ${name:-foo}
上記のサンプルを実行すると、「:-」の右側にあるデフォルト値「foo」が出力されます。
これは冒頭に掲載した次の制御文と同じ意味になります。
if [ "${name}" != "" ]; then
echo ${name}
else
echo foo
fi
3.変数に値が設定されていない場合にデフォルト値を設定する演算子「:=」
変数に値が設定されていない場合に代替文字列を変数に設定するには、「:=」を利用します。
#!/bin/bash
echo ${name:=foo}
上記のサンプルを実行すると、「:=」の右側に設定した「foo」が変数nameに設定されます。
これは次の制御文と同じ意味になります。
if [ "${name}" != "" ]; then
echo ${name}
else
${name}=foo
echo ${name}
fi
4.変数に値が設定されている場合にデフォルト値を使う演算子「:+」
変数に値が設定されている場合にデフォルト値を使うには、「:+」を利用します。
#!/bin/bash
name=foo
echo ${name:+bar}
上記のサンプルを実行すると、「:+」の右側にあるデフォルト値「bar」が出力されます。
これは次の制御文と同じ意味になります。
if [ "${name}" != "" ]; then
echo bar
else
echo ${name}
fi
5.変数に値が設定されていない場合にスクリプトを終了する演算子「:?」
変数に値が設定されていない場合に代替文字列を出力してスクリプトを終了するには、「:?」を利用します。
#!/bin/bash
echo ${name:?foo}
上記のサンプルを実行すると、「:?」の右側に設定した「foo」を出力して、スクリプトを終了します。
Posted by yujiro このページの先頭に戻る
- シェルスクリプトのexpectで応答メッセージを振り分ける方法
- bashでPostgreSQLのselect結果を出力する方法
- bashでbackspaceが動作しない場合の対処
- bashの変数から最後の1文字を取得・削除する方法
- bashのwhile文で利用した変数がループ外で反映されない場合の対処
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処
- bashの正規表現でスペース(空白)を判定する方法
- bashで文字列の長さを調べる方法
- bashで数値を判定する方法
- bashで小数点を比較する方法
- bashの配列をjoinする方法
- bashのif文で正規表現を使用する方法
- Bashで変数を大文字または小文字に変換する方法
- bashの変数をsplitして配列を作る方法
- シェルスクリプトでtelnet接続する方法
トラックバックURL
コメントする
greeting