下午好,这是我的bash代码:
for f in {-20..20};
do
cd V_$f;
echo V_$f;
c= echo "$f /10" | bc -l | xargs printf "%.1f";
echo $c;
sed -i -e "s/TS.Voltage 0.0 eV/TS.Voltage "$c" eV/" scattering.fdf;
cd ..;
done;
以V.sh的名字调用时,结果例如
V_-20
-2.0
...
,依此类推,直到V_20
/ 2.0
代表我的文件夹以及每个文件中所需的值c
。我的问题是,当我查看每个文件夹中的fdf文件以查看命令sed
是否有效时,c
的值未显示。实际上,我得到的是TS.Voltage "space" eV
而不是c
的值。有什么建议吗?
答案 0 :(得分:1)
行
c= echo "$f /10" | bc -l | xargs printf "%.1f";
读取为“将c
暂时清空,然后运行echo
/ bc
/ xargs
管道”。要将一个或多个程序的结果存储在变量中,请使用$(...)
:
c=$(echo "$f /10" | bc -l | xargs printf "%.1f")
接下来,您可能要修复sed
表达式:
命令应如下所示:
"s/TS\.Voltage 0\.0 eV/TS.Voltage $c eV/"
您确实不需要在每行末尾使用分号,尽管我认为这不会造成伤害。