変数名(または可変数)とモード:POSIXは、4つの代替の構成パラメータを(シェルの古いバージョンでサポートされていてもよい)を提供するために、シェルパターンマッチングであり、各構造体は、2つのパラメータを有しています。
第一のモード:
${variable%pattern}
このモードでは、変数シェルルックス、パターンの端部は、それが所定のパターンであるかどうかを確認するために、そしてもしそうであれば、コマンドラインから最短一致パターンの右側に変数の内容を削除するために
第二のモード:
${variable%%pattern}
このモードでは、変数シェルルックス、パターンの端部は、それが所定のパターンであるかどうかを確認し、もしそうであれば、コマンドラインから最長一致モードの右側に変数の内容を削除する場合。
第三のモード:
${variable#pattern}
このモードそれはモデルに始め、そしてもしそうであれば、コマンドラインから最短一致パターンの左側の変数の内容を削除するためのパターンである場合、ルックアップシェル変数を参照する場合、
:第四のモード
${variable##pattern}
このモードでシェル変数それが与えられたか否かを、パターン模様の終わりに、外観を見て、もしそうであれば、コマンドラインから最長一致モードの右側に変数の内容を削除するために
4つのモードは、変数の値を変更しないであろう唯一のパターンでで*マッチングのシンボルを使用して、%%%、および###の違いがあります。
[root@root shell]# var=testcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var%s*e} 从最右边删除最短匹配
testca
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var%%s*e} 从最右边删除最长匹配
te
[root@root shell]# echo $var 变量没有改变
testcase
[root@root shell]# echo ${var#?e} 从最左边删除最短匹配
stcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#*e} 从最左边删除最短匹配
stcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var##*e} 从最左边删除最长匹配,即删除所有
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var##*s} 从最左边删除最长匹配
e
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#test} 删除test
case
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#tests} 没有匹配
testcase
[root@root shell]#
另外
var=97%
var=${var%s?}
echo $var #打印97