从Bash变量中剥离字符
我正在尝试编写一个bash脚本(很糟糕),需要帮助从变量中剥离字符从Bash变量中剥离字符,bash,Bash,我正在尝试编写一个bash脚本(很糟糕),需要帮助从变量中剥离字符 变量定义为$managementipmask=111.111.111/24 我需要去掉变量末尾的/24 提前感谢。使用参数扩展删除第一个/中的所有内容: $ k="111.111.111.111/24" $ echo "${k%%/*}" 111.111.111.111 有关更多详细信息,请参阅有关参数扩展的资源: ${参数%pattern} “模式”与“参数”结尾匹配。结果是 删除最短匹配项的“parameter”的扩展值
变量定义为
$managementipmask=111.111.111/24
我需要去掉变量末尾的/24
提前感谢。使用参数扩展删除第一个
/
中的所有内容:
$ k="111.111.111.111/24"
$ echo "${k%%/*}"
111.111.111.111
有关更多详细信息,请参阅有关参数扩展的资源:${参数%pattern} “模式”与“参数”结尾匹配。结果是 删除最短匹配项的“parameter”的扩展值 ${parameter%%pattern} 如上所述,但删除最长的匹配项 因此,您可以使用单个
%
从最后一个/
中删除:
$ k="111.111.111.111/24/23"
$ echo "${k%/*}"
111.111.111.111/24
另一种方式:
k="111.111.111.111/24"
echo "${k/%\/24/}"
它将最后一个/24
替换为空字符串
${parameter/pattern/string}
模式被展开以生成模式,就像在文件名展开中一样。参数展开,模式的最长匹配
将其值替换为字符串。如果模式以“/”开头,
模式的所有匹配项都替换为字符串。通常只有
第一场比赛被替换。如果模式以“#”开头,则它必须在以下位置匹配:
参数展开值的开头。如果模式开始
对于“%”,它必须在参数的扩展值末尾匹配。
如果字符串为空,则删除模式的匹配项,并
图案可以省略。如果参数为“@”或“”,则替换
操作依次应用于每个位置参数,并且
展开是结果列表。If参数是数组变量
用“@”或“”下标,替换操作将应用于
数组的每个成员依次展开,展开就是结果
名单
$managementipmask=111.111.111.111/24在Bash中是绝对错误的。=
周围没有空格,也没有前导的$
。