3

私はbashスクリプトを書いて、次のメッセージを受け取りました:

/home/myname/documents/myscripts/run_tearingmode.sh: 44 行目: mpirun2: コマンドが見つかりません:

ここで、スクリプトの関連部分

if [[ "$run_jobs" == "y" ]]
 then
 printf "The jobs run one after the other. Have fun with the analysis. \n "
 for ((i=1;i<=$number_subfolders;i++))
  do
  sub_folder=${main_folder}_$i
  cd
  cd gkw/run/${main_folder}/$sub_folder #change into certain subfold
  pwd
  mpirun2 -np 8 ./gkw_btppx-gnu-DP_3481.x  #run on all 8 frames #line 44 Here is the problem 
  cd
 done
fi

私の問題は、特定のフォルダーにコマンドとして行を入力すると、プログラムが正しく実行されることです。これは、私が正しく実装したことを示しています。pwd を使用すると、正しいフォルダーにいることもわかります。どこでミスをしたのかわかりませんでした。プログラムを実行するために、スクリプトに特定のブラケットまたは同等のものが必要ですか? コマンドの前の空白も削除しましたが、何も変わりませんでした。何が間違っていますか?

編集: 問題は、そのようなスクリプトで bashrc からエイリアスを実行できないことでした。だから私は追加しました:

mpirun2='/Path/to/mpirun'

スクリプトに追加し、スクリプト内のコマンドを次のように変更しました。

"$mpirun2" -np 8 ./gkw_btppx-gnu-DP_3481.x  #run on all 8 frames

これは機能します。どうもありがとう。(残念ながら、この回答をスターターとして自分で書くことはできません:))

4

2 に答える 2

1

スクリプトの上にシバンを追加すると思います

#/usr/bin/env bash

および実行可能ファイルへのフルパス(このコマンドはそれを示しますwhich mpirun2)これは機能するはずです。

于 2013-10-10T13:19:45.413 に答える
1

mpirun2 がユーザーの PATH にない場合 ('which -a' は何も返しません)。フルパスを使用して呼び出す必要があります。

/full/path/to/mpirun2 -np 8 ./gkw_btppx-gnu-DP_3481.x
于 2013-10-10T13:36:17.357 に答える