2014-09-12 156 views
0

我想替換將寫在POSCAR文件中的「c」中的「CCC」的值。但不知怎的,操作不起作用。 我得到這個錯誤:./script-c-b-ratio.sh: line 14: 3.24*4.78: syntax error: invalid arithmetic operator (error token is ".24*4.78")在bash腳本中定義變量

該操作確實適用於變量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 
+2

請勿在作業中放置空格。 – Cyrus 2014-09-12 17:57:30

+0

@Cyrus,這應該是答案,而不是評論。 – SzG 2014-09-12 18:28:52

+0

我知道bash不會做浮點數學運算。 – 2014-09-12 18:31:32

回答

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