我想替换" CCC"的值。在" c "这将写在POSCAR文件中。但不知何故,这项行动无效。
我收到此错误:./script-c-b-ratio.sh: line 14: 3.24*4.78: syntax error: invalid arithmetic operator (error token is ".24*4.78")
该操作适用于变量i和j。请提出一些建议。提前谢谢!
#!/bin/bash
for i in 3.24 3.26
do
mkdir 'a_'$i
cd 'a_'$i
for j in 4.78 4.80 4.82 4.84 4.86
do
mkdir 'b_'$j
cd 'b_'$j
for k in 70.459 72.000
do
CCC = "echo $'((($k)/$(($i*$j))))'"
cp ../../POSCAR_default .
sed 's/_a_/'$i'/g' POSCAR_default > POSCAR1
sed 's/_b_/'$j'/g' POSCAR1 > POSCAR2
sed 's/_c_/'CCC'/g' POSCAR2 > POSCAR
rm POSCAR_default
rm POSCAR1
rm POSCAR2
done
cd ..
done
cd ..
done
答案 0 :(得分:0)
问题是你的脚本处理浮点数,bash不支持浮点数学,你可以使用bc
这是bash计算器来实现浮点数学
将第14行替换为脚本中的以下代码,它应该可以正常工作
CCC=$(echo "scale=3;$k/($i*$j)" | bc)
有关bc
命令的完整参考,请访问页面https://www.gnu.org/software/bc/manual/html_mono/bc.html