特殊符号,. * # 在大括号内

特殊符号,. * # 在大括号内
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}

    该单词被扩展以产生一个模式,就像文件名扩展一样。如果模式与参数扩展值的尾部部分匹配,则扩展的结果是具有最短匹配模式(“%”情况)或最长匹配模式(“%%”情况)的参数值已删除。 ...

相关内容