我写了一个bash脚本,我收到了这些消息:
/home/myname/documents/myscripts/run_tearingmode.sh:line 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
这很有效。 非常感谢。 (遗憾的是我不能把这个答案自己写成首发:))
答案 0 :(得分:1)
我想如果你在脚本上添加一个shebang
#/usr/bin/env bash
以及可执行文件的完整路径(此命令显示which mpirun2
)这应该可以。
答案 1 :(得分:1)
如果mpirun2不在用户的PATH上('-a'将不返回任何内容)。您必须使用完整路径调用它:
/full/path/to/mpirun2 -np 8 ./gkw_btppx-gnu-DP_3481.x