我有命令的输出df
,并使用cut
我已成功提取 22%
.但问题是我只想22
要不%
,因为我将将该值与另一个整数变量进行比较。如何在 Bash 中做到这一点?
答案1
最简单、最快的可能是使用 bash'参数扩展功能, 像这样:
string="22%"
percentage="${string%\%}"
echo "$percentage" # Output: 22
中${string%\%}
,第一个%
具有特殊含义:从参数末尾删除(该参数string
在本例中)。
第二个%
是什么从参数中删除。但由于%
在此上下文中具有特殊含义,因此必须使用 进行转义\
。
有关更多示例和信息,请参阅高级 bash 脚本编写指南第 10 章。
答案2
命令行上有很多方法可以提取数字,例如链接到POSIXsed
或awk
工具。但是,既然您直接询问如何使用 bash 来实现这一点。假设我们有一个 shell 变量 $VARIABLE,它被设置为 22%,那么这段代码将帮助您仅获取数字22
user@box:~$ VARIABLE='22%'
user@box:~$ echo "${VARIABLE%%\%}"
输出 22
考虑到这有点令人困惑,尤其是在您的示例中,%
此处使用的字符具有特殊含义,例如“从存储在 sheel 变量中的字符串末尾替换”。为了表明应该从末尾删除的是%
字面上的字符,我们必须像这样转义它\%