2016-10-15 14 views
0

基本的に私はGaussian09 freqchkユーティリティを実行しています。ターミナルとやりとりするためのbashスクリプトを書く必要があり、ここでは変数(温度)は$iです。ターミナルのスクリプトは、私のユーザーの引数は何らかの理由で認識できないように見え、ターミナルは私のユーザー引数のために保留中です。端末入力要求と対話するためのbashスクリプトの使用

#!/bin/bash 
for i in {77..900} 
do 

freqchk methane.chk > $i 
#Write Hyperchem file? 
echo "N" 
#Temperature (K)? 
echo "$i" 
#Pressure (Atm) 
echo "0" 
#Scale factor for frequencies during thermochemistry? 
echo "1.0" 
#Do you want to use the principal isotope masses? 
echo "Y" 
#Project out gradient direction? 
echo "Y" 

done 

私はShellCheckでチェックしましたが、エラーフィードバックは出ません。私は答えをHave bash script answer interactive prompts から受け取りました。そのため私はechoを使用していますが、まったく動作していないようです。誰かが何らかのヒントを惜しまないなら、大変感謝しますか?

答えて

0

freqchkコマンドの完全な構文は次のとおりです

freqchk checkpoint-file [options] [answers to prompts] 

ので、この場合には、スクリプトは次のようになります。行にすべてを置く

#!/bin/bash 
for i in {77..900} ; do 
    freqchk methane.chk N "$i" "0" "1.0" Y Y > $i 
done 

。あなたのコメントされたバージョンよりも読みにくくなりました。あなたが本当にあなたのコメントのようなもの試みることができるしたい場合:私はこの答えを入力していますが

#!/bin/bash 
for i in {77..900} 
do 

grep -v '#' <<EOF | freqchk methane.chk > $i 
#Write Hyperchem file? 
N 
#Temperature (K)? 
$i 
#Pressure (Atm) 
0 
#Scale factor for frequencies during thermochemistry? 
1.0 
#Do you want to use the principal isotope masses? 
Y 
#Project out gradient direction? 
Y 
EOF 
done 

を、私は質問がどのようにインとアウトプットのリダイレクト作品を理解の欠如から来ていると思います。

+0

最初の答えはシンプルで、うまくいきます.2番目の方が分かりやすいですが、ターミナルを通過したときにいくつかのコマンドがトリガされなかったようです。しかし、とにかく、答えは十分に実行可能です、おかげでヒープ! –

+0

あなたは正しいです、前にプログラミングをしたことはありません。新しい研究プロジェクトのおかげでbashスクリプト、fortran 90/95とmathematicaを学び始めました。私は実際に言語を正しく学ぶ時間がありません。私が学ぶ方法はますます多くの場合に対処することです。 –

関連する問題