У меня есть код в ударе:
a=$(cat "tempf.out")
Где tempf.out - что-то как это:
-432.4319347412
Я хочу к multyiply это 2, таким образом, я пишу:
result=$(expr $a*2)
Но я получаю это:
*232.4319347412
Если я пытаюсь использовать до н.э:
result=$(expr $a*2|bc)
Я добираюсь:
(standard_in) 1: illegal character: ^M
Помогите зафиксировать его.
Если Ваш tempf.out
файл будет иметь окончания строки стиля DOS (CR-LF) затем, то необходимо будет зафиксировать это - или на уровне файла с помощью dos2unix
, tr
, или sed
, например, например,
a=$(sed 's/\r$//' tempf.out)
bc <<< "$a*2"
или путем удаления его из $a
переменная с помощью возможностей замены параметра оболочки, например,
a=$(<tempf.out)
bc <<< "${a%^M}*2"
, где эти ^M
составленное использование фактического возврата каретки Ctrl + V Ctrl + M
Большое спасибо за всех
a=$(sed 's/\r$//' tempf.out)
result=$(expr $a*2 | bc)
echo $result
работы для меня