Unix-shell-substitutions
Unix/Linux-シェル置換
置換とは何ですか?
シェルは、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コマンドで使用できる次のエスケープシーケンス-
Sr.No. | Escape & Description |
---|---|
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
可変置換
変数置換により、シェルプログラマーは、状態に基づいて変数の値を操作できます。
これはすべての可能な置換のための次の表です-
Sr.No. | Form & Description |
---|---|
1 |
${var} _var_の値を置き換えます。 |
2 |
$\{var:-word} _var_がnullまたは未設定の場合、 var の代わりに_word_が使用されます。 _var_の値は変更されません。 |
3 |
$\{var:=word} _var_がヌルまたは未設定の場合、_var_は word の値に設定されます。 |
4 |
$\{var:?message} _var_がnullまたは未設定の場合、_message_は標準エラーに出力されます。 これにより、変数が正しく設定されていることが確認されます。 |
5 |
$\{var:PLUSword} _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