如何使用Bash命令提取grep返回的数值并赋值变量执行算术运算
实现方案
方案1:按行顺序批量赋值(适合行顺序固定的场景)
通过进程替换搭配read命令一次性读取两个数值,搭配awk的$NF参数直接提取每行最后一列,不受列之间空格数量影响:
# 一次性读取两个值赋值给num1和num2 read num1 num2 < <(grep 'number' FILE | awk '{print $NF}')
执行后$num1就是123,$num2就是456。
方案2:按关键字单独赋值(更稳妥,不受行顺序影响)
如果不确定number1和number2的行顺序,可单独匹配关键字提取:
num1=$(grep 'number1:' FILE | awk '{print $NF}') num2=$(grep 'number2:' FILE | awk '{print $NF}')
算术运算示例
Bash原生支持整数算术运算,使用$(( ))语法即可:
# 求和 sum=$((num1 + num2)) # 求乘积 product=$((num1 * num2)) # 求差值 diff=$((num2 - num1)) # 求整数商 quotient=$((num2 / num1)) # 输出验证 echo "和为: $sum" echo "乘积为: $product"
如果需要处理浮点数运算,可搭配bc工具实现:
# 浮点数除法示例,保留2位小数 float_div=$(echo "scale=2; $num2 / $num1" | bc) echo "浮点数商为: $float_div"
内容的提问来源于stack exchange,提问作者user9094625
相关产品推荐
相关产品推荐

