使用%运算符的bash变量声明

时间:2015-03-11 00:28:05

标签: bash

我正在浏览一个bash脚本,我无法理解这句话无法搜索它:

IPV=${IPTABLES%tables}

这句话意味着什么?

2 个答案:

答案 0 :(得分:2)

这是参数替换的一个例子(与数学运算符无关)。这里还有更多示例:http://tldp.org/LDP/abs/html/parameter-substitution.html

  

$ {var%Pattern}从$ var中删除与$ var的后端匹配的$ Pattern的最短部分。

     

$ {var %% Pattern}从$ var中删除与$ var的后端匹配的$ Pattern的最长部分。

例如:

$ export IPTABLES=footables
$ echo ${IPTABLES%tables}
foo

答案 1 :(得分:1)

显示${IPTABLES%table}的变量称为参数,%是参数修饰符。

此“set”中有4个基本参数修改器

  ${var#str*x}   #   removes str and the shortest match to x from left side of variable's value 
  ${var##str*x}  # removes longest match of str and everything to the farthest x


  ${var%str}   # removes str from the right side of the variable's value
  ${var%x*str} # removes shortest match of x*str from the right side 
  ${var%%x*str}  # removes longest match of x*str from right side

所以${var#X}${var##X}计为2,${var%X}${var%%X}再计算2。

还有其他一些,取决于版本和bash,vs ksh,vs zsh

所以玩

 var=abcxstrxyz
 echo ${var%#str}
 echo ${var%str*}
 echo ${var%%str}
 echo ${var%%str*}

等,以了解这可以做些什么。

IHTH