Variable-Substitution

特殊符號,.* # 在大括號內

  • June 7, 2015
bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.}
echo "BASH VERSION --- $BASH_VERSION"
echo "bmajor ----- $bmajor"
echo "bminor ----- $bminor"

印刷,

BASH VERSION --- 4.2.46(1)-release
bash --- 4.2
bmajor ----- 4
bminor ----- 2

我通常使用大括號{}來處理數組。我在這裡看到,它們用於模式匹配。

如何${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.}評估這些值?裡面的特殊字元 , ,*是什麼意思?.``#``{}

引用Bash 參考手冊

  • ${parameter#word}
  • ${parameter##word}

單詞被擴展以產生一個模式,就像在文件名擴展中一樣(請參閱文件名擴展)。如果模式匹配參數擴展值的開頭,則擴展結果是具有最短匹配模式(’#’ 情況)或最長匹配模式(’##’ 情況)的參數擴展值刪除。…

  • ${parameter%word}
  • ${parameter%%word}

單詞被擴展以產生一個模式,就像在文件名擴展中一樣。如果模式匹配參數擴展值的尾隨部分,則擴展結果是具有最短匹配模式(’%’ 情況)或最長匹配模式(’%%’ 情況)的參數值刪除。…

引用自:https://unix.stackexchange.com/questions/208041