bash シェルでは、コマンドの置換に $( ) と ` ` (バックティック) が使用されます。また、$() はどのシェルでも使用できます。bash2 を使用する場合は問題ありません...
${ }を見てください...実際には変数の置換に使用されます。一般に、$var と ${var} の間に違いはありません。ただし、 ${ } を使用すると、変数名のスコープをより正確に定義できます。
ここでは、いくつかの例を使用して、${ } の特殊な関数のいくつかを説明します。
変数を次のように定義するとします。
file=/dir1/dir2/dir3/my.file.txt
${ } を使用して相互に置換し、異なる値を取得できます:
${file#*/}: 最初の / と左側の文字列を削除します: dir1/dir2/dir3/my.file.txt
${file##*/}: 最後の / と左側の文字列を削除します: my.file.txt
${file#*.}: 最初の . とその左側の文字列を削除します: file.txt
${file##*.}: 最後の . と左側の文字列を削除します: txt
${file%/*}: 最後の / と右側の文字列を削除します: /dir1/dir2/dir3##
#${file%%/*}: 最初の / と右側の文字列を削除します: (null 値)${file%.*}: 最後の . と右側の文字列を削除します: /dir1/dir2/dir3/my.file
${file%%.*}: 最初の . と右側の文字列を削除します: /dir1/dir2/dir3/my
% は右側を削除することを意味します (% はディスク上の $ の右側にあります)
単一のシンボルが最小一致であり、2 つのシンボルが最大一致です。
${file:0:5}: 左端の 5 バイトを抽出します: /dir1
${file:5:5}: 5 バイト目の右側から連続する 5 バイトを抽出します: /dir2
変数値の文字列を置き換えることもできます:
${file/dir/path}: 最初のディレクトリを path:/
に置き換えます。
パス1/ディレクトリ2/ディレクトリ3/my.file.txt${file//dir/path}: すべてのディレクトリを path:/
に置き換えます。
パス1/パス2/パス3/my.file.txt${ } を使用すると、さまざまな変数の状態 (未設定、null 値、null 以外の値) に値を割り当てることもできます。
${file-my.file.txt}: $file が設定されていない場合は、戻り値として my.file.txt を使用します。 (NULL 値と非 NULL 値は処理されません)
${file:-my.file.txt}: $file が設定されていないか空の場合、戻り値として my.file.txt を使用します。 (null 以外の値は処理されません)
${file my.file.txt}: $file が null 値または null 以外の値に設定されている場合、my.file.txt が戻り値として使用されます。 (未設定の場合は何も処理しません)
${file: my.file.txt}: $file が空でない値の場合、戻り値として my.file.txt を使用します。 (設定がない場合や空の場合は処理を行いません)
${file=my.file.txt}: $file が設定されていない場合は、my.file.txt を戻り値として使用し、$file を my.file.txt に割り当てます。 (NULL 値と非 NULL 値は処理されません)
${file:=my.file.txt}: $file が設定されていないか空の場合、戻り値として my.file.txt を使用し、$file を my.file.txt に割り当てます。 (null 以外の値は処理されません)
${file?my.file.txt}: $file が設定されていない場合は、my.file.txt を STDERR に出力します。 (NULL 値と非 NULL 値は処理されません)
${file:?my.file.txt}: $file が設定されていないか空の場合、my.file.txt を STDERR に出力します。 (null 以外の値は処理されません)
上記の理解は、未設定、null、および非 null の 3 つの代入状態を明確に区別する必要があるということです。
一般的に、: は null に関係します。: が含まれていない場合、null は影響を受けません。: が含まれている場合、null も影響を受けます。また、${#var} は変数値の長さを計算できます:
/dir1/dir2/dir3/my.file.txt がちょうど 27 バイトであるため、
${#file} は 27 を取得できます...
$(()) 目的:
整数演算に使用されます。
bash では、$(( )) の整数算術記号はおおよそ次のとおりです。
- * /: それぞれ「加算、減算、乗算、除算」。
%: 剰余演算
& | ^ !: それぞれ「AND、OR、XOR、NOT」演算。
###例:###wangnc>a=5;b=7;c=2;
wangnc>エコー $a $b
5 7
wangnc>エコー $(( a b*c))
19
wangnc>エコー $(((a*b)/c))
17
wangnc>エコー $(($a $b*$c))
19
ワング>
$(( )) 内の変数名は、次のように $(( )) の前に $ 記号を追加するか、$ 記号を付けなくても置き換えることができます。
$(( $a $b * $c)) は 19の結果も取得できます。
さらに、$(( )) は、異なるキャリー番号 (2 進数、8 進数、16 進数など) を使用して演算を実行することもできますが、出力結果はすべて 10 進数です。echo $((16#2a)) 結果は 42 (16 進数から 10 進数へ)
###(())の用法:###実際には、(( )) を使用するだけで変数値を再定義したり、テストを行ったりすることもできます。
a=5; ((a )) $a は 6として再定義できます
a=5; ((a--)) の場合、a=4a=5; b=7; ((a (( )) に使用される一般的なテスト記号は次のとおりです。
<:>:
より大きい
<=: 以下 >=:以上
==:に等しい
!=:と等しくない
以上がbash シェルで $() と ${}、および $(()) と (()) を区別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。