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#*.}
如何评估这些值?还有里面的特殊字符 , ,*
是什么意思?.
#
{}
答案1
引用自Bash 参考手册:
${parameter#word}
${parameter##word}
该单词被扩展以产生一个模式,就像文件名扩展一样(请参阅文件名扩展)。如果模式与参数扩展值的开头匹配,则扩展的结果是具有最短匹配模式(“#”情况)或最长匹配模式(“##”情况)的参数扩展值已删除。 ...
${parameter%word}
${parameter%%word}
该单词被扩展以产生一个模式,就像文件名扩展一样。如果模式与参数扩展值的尾部部分匹配,则扩展的结果是具有最短匹配模式(“%”情况)或最长匹配模式(“%%”情况)的参数值已删除。 ...