我正在编写一个 bash 脚本来对文件执行一些命令。为此,我需要加载包含这些命令的模块。现在我可以从命令行很好地执行这些操作,但我想在脚本中实现检查以查看是否加载了这些模块,如果没有加载它们。这是我到目前为止所做的(我刚刚学习 bash 3 天,所以请原谅任何新手错误):
#A list with all the necessary modules
declare -a modules=("CDO/1.9.7-gompi-2019a" "ncview/2.1.7-gompi-2019a")
echo "Running script"
echo ""
#Check if modules are loaded. If not, load them
for mod in "${modules[@]}"
do
module is-loaded $mod
if [ $? = 1 ]
then
echo "Loading ${mod}"
module load $mod
else
echo "${mod} is already loaded"
fi
done
echo ""
echo "Finished running script"
它进入 if 语句,表示模块没有加载,然后说“正在加载 CDO...”,但是当我尝试使用来自该模块的命令时,它不起作用,因为模块似乎没有被执行. 但是“模块已加载”执行得很好。我究竟做错了什么?
[diyon@login2 scripts]$ ./script.sh
Running script
Loading CDO/1.9.7-gompi-2019a
Loading ncview/2.1.7-gompi-2019a
Finished running script
[diyon@login2 scripts]$ cdo
-bash: cdo: command not found