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または設定されていない、単語が置換されますvar。varの値は変わりません。 |
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