bashで変数を簡単に制御するための演算子

bashで変数を簡単に制御するための演算子

Posted at May 8,2013 12:55 AM
Tag:[bash]

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」を出力して、スクリプトを終了します。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)