String Bash-使用通配符删除字符后的所有文本

String Bash-使用通配符删除字符后的所有文本,string,bash,trim,String,Bash,Trim,我看到了如何在Bash中删除字符串中字符后的所有文本。有了这些信息,我可以做类似的事情来取整一个数字: NUMBER=10.12345 NUMBER=${NUMBER%.*} # 10 但是,我想在小数点后保留两位数字。如何使10.12345成为10.12?我不需要适当的圆,只是修剪一下。运行${NUMBER%.*}时可能有通配符。您可以使用printf对浮点进行舍入。请尝试printf“%.2f”“${NUMBER}”。您还可以将该值保存到变量中:printf-v myvar“%.2f”“$

我看到了如何在Bash中删除字符串中字符后的所有文本。有了这些信息,我可以做类似的事情来取整一个数字:

NUMBER=10.12345
NUMBER=${NUMBER%.*} # 10

但是,我想在小数点后保留两位数字。如何使
10.12345
成为
10.12
?我不需要适当的圆,只是修剪一下。运行
${NUMBER%.*}
时可能有通配符。

您可以使用
printf
对浮点进行舍入。请尝试
printf“%.2f”“${NUMBER}”
。您还可以将该值保存到变量中:
printf-v myvar“%.2f”“${NUMBER}”
您可以使用
printf
对浮点进行舍入。请尝试
printf“%.2f”“${NUMBER}”
。您也可以将值保存到变量中:
printf-v myvar“%.2f”“${NUMBER}”
使用
=~
运算符:

$ num=10.12345
$ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
10.12
$ num=10
$ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
10

使用
=~
运算符:

$ num=10.12345
$ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
10.12
$ num=10
$ [[ $num =~ ^[0-9]*(.[0-9]{1,2})? ]] && echo $BASH_REMATCH
10

哦,那很方便。谢谢,我会在10分钟的计时结束后把它标记为正确的。哦,这很方便。谢谢,我会在10分钟计时结束后将其标记为正确