この分析はどのようなものですか? [コピー]

この分析はどのようなものですか? [コピー]

この主張分析は何ですか?

$RES="${SOME_VAR##foo/}"  

答え1

${SOME_VAR##foo/}-強く打つ変数の置換。

foo/文字列の先頭(変数の値)からパターンに一致する部分を見つけ、SOME_VARパターンを含む左部分を切り取ります。

例:

s="foo/some#foo#textfoo/textlast"
echo ${s##foo/}
some#foo#textfoo/textlast

ノートは、文字列の先頭から最初のパターン${s##foo/}のみを検索するという点で同じです。${s#foo/}foo/

これにより、${s##*foo/}左側の部分が切り捨てられます。最後一致パターン(含む)

echo ${s##*foo/}
textlast

答え2

によるとman bash

パラメータ拡張
「$」文字は、パラメータ拡張、コマンド置換、または算術拡張を導入します。拡張するパラメータ名または記号は中括弧で囲むことができます。これはオプションですが、名前の一部として解釈できる直後の文字から拡張される変数を保護するために使用されます。

${パラメータ#単語}
${パラメータ##単語}
一致するプレフィックスパターンを削除します。
パス名拡張と同様に、単語を拡張してパターンを生成します。パターンがパラメータ値の先頭に一致する場合、拡張結果は、最短一致パターン(「#」ケース)または最長一致パターン(「##」ケース)が削除されたパラメータ拡張値です。引数が@または*の場合、パターン除去操作は各位置引数に順番に適用され、拡張は結果リストになります。パラメーターが@または*付き添え字付きの配列変数の場合、パターン除去操作は配列の各メンバーに順番に適用され、拡張は結果のリストです。

関連情報