我的性格有问题。我认为是dos和unix之间的转换问题。
我有一个浮点值变量。
当我用 echo 命令打印它时,我得到:
0.495959
但是当我尝试使用 bc 命令对该值进行操作时(我不确定如何编写 bc 命令)。
echo $mean *1000 |bc
我得到:
(standard_in) 1 : illegal character: ^M
我已经在我的 .sh 文件中使用了 dos2unix 命令。
我认为这是因为我的变量具有 ^M 字符(未使用 echo 命令打印)
我怎样才能消除这个错误?
我手边没有 Cygwin,但在常规的 Bash 中,您可以使用 tr -d
命令去除指定的字符,并且您可以使用 $'... '
符号在命令行参数中指定奇怪的字符(它就像一个普通的单引号字符串,除了它支持 C/Java/Perl/etc.-like 转义序列)。所以,这:
echo "$mean" * 1000 | tr -d $'\r' | bc
将从 echo
到 bc
的途中删除回车符。
你可能真的想运行这个:
mean=$(echo "$mean" | tr -d $'\r')
这将修改 $mean
以去除其中的任何回车符,这样您就不必在以后使用它的命令中担心它。
(尽管将 $mean
设置为开头的代码也值得一看。$mean
是如何以回车结束的,不管怎样?也许你可以解决这个问题。)