我正在尝试编写一个bash脚本(很差)并需要帮助从变量中剥离字符。
变量定义为$managementipmask= 111.111.111.111/24
我需要从变量的末尾去掉/ 24。
提前致谢。
答案 0 :(得分:4)
使用参数展开功能删除第一个/
:
$ k="111.111.111.111/24"
$ echo "${k%%/*}"
111.111.111.111
有关其他详细信息,请参阅有关参数扩展的资源:
http://mywiki.wooledge.org/BashGuide/Parameters#Parameter_Expansion
<强> $ {参数%图案} 强>
'pattern'与'parameter'的结尾匹配。结果是 删除最短匹配的'参数'的扩展值。
<强> $ {参数%%图案} 强>
如上所述,但删除了最长的匹配。
因此,您可以使用单个/
删除上一个%
:
$ k="111.111.111.111/24/23"
$ echo "${k%/*}"
111.111.111.111/24
答案 1 :(得分:0)
另一种方式:
k="111.111.111.111/24"
echo "${k/%\/24/}"
它用空字符串替换最后/24
。
$ {参数/模式/字符串}
扩展模式以生成与文件名扩展一样的模式。参数被扩展并且模式的最长匹配 反对其值被替换为字符串。如果模式以'/'开头, 模式的所有匹配都用字符串替换。通常只有 第一场比赛被替换。如果模式以'#'开头,则必须匹配at 参数扩展值的开头。如果模式开始 使用'%',它必须在参数的扩展值的末尾匹配。 如果string为null,则删除pattern的匹配项和/ following 模式可以省略。如果参数是'@'或'',则替换 操作依次应用于每个位置参数,并且 扩展是结果列表。如果参数是数组变量 使用'@'或''下标,替换操作适用于 依次是数组的每个成员,并且扩展是结果 列表。