我在 bash 中有代码:
a=$(cat "tempf.out")
其中 tempf.out 是这样的:
-432.4319347412
我想将其乘以 2,因此我写道:
result=$(expr $a*2)
但我明白这一点:
*232.4319347412
如果我尝试使用 bc:
result=$(expr $a*2|bc)
我得到:
(standard_in) 1: illegal character: ^M
请帮忙修复它。
答案1
如果你的tempf.out
文件有 DOS 风格的行尾 (CR-LF),那么你需要修复它 - 在文件级别使用dos2unix
, tr
,或者sed
例如
a=$(sed 's/\r$//' tempf.out)
bc <<< "$a*2"
$a
或者通过使用 shell 的参数替换功能将其从变量中删除,例如
a=$(<tempf.out)
bc <<< "${a%^M}*2"
其中是使用++组成的^M
实际回车符CtrlV CtrlM
答案2
非常感谢大家
a=$(sed 's/\r$//' tempf.out)
result=$(expr $a*2 | bc)
echo $result
对我有用