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コマンドで使用できる次のエスケープシーケンス-

シニア番号 エスケープと説明
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

変数置換

変数置換により、シェルプログラマーは変数の状態に基づいて変数の値を操作できます。

可能なすべての置換について、次の表を示します-

シニア番号 フォームと説明
1

${var}

varの値を代入します。

2

${var:-word}

場合varがnullまたは設定されていない、単語が置換されますvarvarの値は変わりません。

3

${var:=word}

varがnullまたは未設定の場合、varはの値に設定されます。word

4

${var:?message}

varがnullまたは未設定の場合、メッセージは標準エラーで出力されます。これにより、変数が正しく設定されていることが確認されます。

5

${var:+word}

varが設定されている場合、varの代わりにwordが使用されます。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