Unix-shell-substitutions

提供:Dev Guides
移動先:案内検索

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