Regex 如何在我的bash脚本中隐藏或删除零?
这是我的剧本:Regex 如何在我的bash脚本中隐藏或删除零?,regex,bash,variables,math,logic,Regex,Bash,Variables,Math,Logic,这是我的剧本: echo -n "number 1 :"; read bil1 echo -n "number 2 :"; read bil2 multiple=$(echo $bil1*$bil2 |bc -l |sed -e 's/^\./0./' -e 's/^-\./-0./'); echo " Your result : $bil1 * $bil2 = $multiple "; 如果我为$bil1输入9.5,为$bil2输入300,结果是2850.0 我想要结果: Your resu
echo -n "number 1 :";
read bil1
echo -n "number 2 :";
read bil2
multiple=$(echo $bil1*$bil2 |bc -l |sed -e 's/^\./0./' -e 's/^-\./-0./');
echo " Your result : $bil1 * $bil2 = $multiple ";
如果我为$bil1
输入9.5
,为$bil2
输入300
,结果是2850.0
我想要结果:
Your result : 9.5 * 300 = 2850
如何隐藏或删除结果末尾的零?例如,仅显示
2850
?将以下部分添加到sed命令(在末尾):
(删除一个点,然后在末尾任意多个零,不加任何内容。)
顺便说一下,您最好将
echo$bil1*$bil2
替换为echo“$bil1*$bil2”
,否则根据当前目录的内容,您可能会得到奇怪的效果。将以下部分添加到sed命令中(在末尾):
(删除一个点,然后在末尾任意多个零,不加任何内容。)
顺便说一下,您最好将
echo$bil1*$bil2
替换为echo“$bil1*$bil2”
,否则根据当前目录的内容,您可能会得到奇怪的效果。将bc
的正常浮点输出分配给变量,然后使用参数扩展对其进行修剪:
multiple=$(echo "$bil1*$bil2" | bc -l)
# Not POSIX, unfortunately
shopt -s extglob
multiple=${multiple%.+(0)}
echo " Your result : $bil1 * $bil2 = $multiple "
POSIX解决方案是让printf
完成工作
multiple=$(echo "$bil1*$bil2" | bc -l)
printf " Your result : %1.1f * %d = %1.0f\n" $bil1 $bil2 $multiple
将
bc
的正常浮点输出分配给变量,然后使用参数展开对其进行修剪:
multiple=$(echo "$bil1*$bil2" | bc -l)
# Not POSIX, unfortunately
shopt -s extglob
multiple=${multiple%.+(0)}
echo " Your result : $bil1 * $bil2 = $multiple "
POSIX解决方案是让printf
完成工作
multiple=$(echo "$bil1*$bil2" | bc -l)
printf " Your result : %1.1f * %d = %1.0f\n" $bil1 $bil2 $multiple
使用bash的内置
printf
控制输出
$ bil1=9.5; bil2=300; printf "%.0f\n" $(bc -l <<< "$bil1 * $bil2")
2850
$bil1=9.5;bil2=300;printf“%.0f\n”$(bc-l使用bash的内置printf
控制输出
$ bil1=9.5; bil2=300; printf "%.0f\n" $(bc -l <<< "$bil1 * $bil2")
2850
$bil1=9.5;bil2=300;printf“%.0f\n”$(bc-l@Vash2593您在看哪个脚本?@Vash2593否,第五行中的$bil1*$bil2
当前未被引用。@Vash2593您在看哪个脚本?@Vash2593否,第五行中的$bil1*$bil2
当前未被引用。如果要舍入到下一个整数,这可能是最好的解决方案;如果只有一个y想要在句点后删除多余的零(但不是其他数字),它不起作用。如果要舍入到下一个整数,这可能是最好的解决方案;如果只想在句点后删除多余的零(但不是其他数字),它就不起作用。