TopProgramming Languagebash > 2013年5月
2013年5月 8日

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

May 8,2013 12:55 AM
Tag:[]
Permalink

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

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3