Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Bash变量中剥离字符_Bash - Fatal编程技术网

从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”的扩展值

我正在尝试编写一个bash脚本(很糟糕),需要帮助从变量中剥离字符


变量定义为
$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中是绝对错误的。
=
周围没有空格,也没有前导的
$