目次
置換とは
shellが1つ以上の特殊文字を含む式を検出すると、置換を実行します。
実例
変数の出力値はその値に置換されます。 同時に、「\ n
」は改行されます。
#!/bin/sh
a=10
echo -e "Value of a is $a \n"
以下の結果が表示されます。 ここで、-e
オプションを使用すると、バックスラッシュのエスケープを解釈できます。
Value of a is 10
以下は、-e
オプションが付いていないで、出力された結果です。
Value of a is 10\n
echoコマンドで以下のエスケープシーケンスが使用できます。
番号 | エスケープと説明 |
1 | \ バックスラッシュ |
2 | \a アラート(BEL) |
3 | \b バックスペース |
4 | \C 末尾の改行文字を削除する |
5 | \F ページを変更する |
6 | \n 新規チーム |
7 | \rキャリッジリターン |
8 | \t 横ラベル |
9 | \v 縦ラベル |
-E
オプションを使用して、バックスラッシュのエスケープの解釈を無効にすることができます。(デフォルト)
-n
オプションを使用して、新しい行の挿入を無効にすることができます。
コマンド置換
コマンド置換は、シェルが特定のコマンドセットを実行し、コマンドの代わりにその出力を置換するメカニズムです。
構文
コマンドが「-」に指定された時に、コマンド置換を実行します。
`command`
コマンド置換を実行する時には、一重引用符の代わりに、バッククォートを使用してください。
実例
コマンド置換は通常、コマンドの出力を変数に割り当てるために使用されます。 以下の実例は、コマンド置換を示します。
#!/bin/sh
DATE=`date`
echo "Date is $DATE"
USERS=`who | wc -l`
echo "Logged in user are $USERS"
UP=`date ; uptime`
echo "Uptime is $UP"
実行した後、以下の結果が表示されます。
Date is Thu Jul 2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul 2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
変数置換
変数置換により、Shellプログラマーは変数の状態に応じて変数の値を操作できます。
以下のテーブルには、すべての置換可能の方法を示します。
番号 | テーブルと説明 |
1 | $ {var} varの値を置換します。 |
2 | $ {var:-word} varがnullまたは未設定の場合は、varをwordに置換します。 varの値は変更されません。 |
3 | $ {var:= word} varがnullまたは未設定の場合、varはwordの値に設定されます。 |
4 | $ {var:?message} varがnullまたは未設定の場合、メッセージは標準エラーとして出力されます。 これにより、変数の設定が正しいかどうかを確認します。 |
5 | $ {var:+ word} VARは文字がバリアントに置換する場合、varの値を変更しません。 |
実例
以下のは、上記の置換のさまざまな状態を示す実例です。
#!/bin/sh
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"
echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"
unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"
var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"
echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"
実行した後、以下の結果が表示されます。
Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix
コメントを残す