我正在尝试在Centos7机器上运行此bash程序。 我尝试了许多不同的方法,但是每次都出现此错误:
line 31: syntax error near unexpected token `done' line 31: `done'
第31行属于第一次完成。
我用cat -v mybash.bash来检查奇怪的令牌,但是没有。
我的脚本如下:
for mainFolder in *
do
if [ -d "${mainFolder}" ]
then
cd "${mainFolder}" || exit
echo "Entering in directory ${mainFolder}"
cp ../mypy.py .
chmod +x mypy.py
./mypy.py
echo "Executing mypy.py"
sleep 1
for subFolder in *
do
if [ -d "${subFolder}" ]
then
cd "${subFolder}" || exit
echo "Entering in directory $subFolder in $mainFolder"
echo "Submitting slurm file in current directory"
sbatch *.slurm
sleep 1
fi
cd ..
done
fi
cd ..
done
请帮助我注意我在做错什么。
非常感谢。
答案 0 :(得分:1)
我的猜测是,slurm提交脚本不存在。以下内容将检查是否找到了一个且不超过一个的脚本。
我还移动了cd ..
,使其仅在cd
之后发生。
for mainFolder in *
do
if [ -d "${mainFolder}" ]
then
echo "Entering in directory ${mainFolder}"
cd "${mainFolder}" || exit
cp ../mypy.py .
chmod +x mypy.py
echo "Executing mypy.py"
./mypy.py
sleep 1
for subFolder in *
do
if [ -d "${subFolder}" ]
then
cd "${subFolder}" || exit
echo "Entering in directory $subFolder in $mainFolder"
scripts=$(ls *.slurm)
nScripts=$(echo $scripts | wc -w)
if [ $nScripts == 1 ]
then
echo "Submitting $scripts"
sbatch $scripts
elif [ $nScripts == 0 ]
then
echo "Error: No script found"
else
echo "Error: $nScripts scripts found (${scripts})"
fi
sleep 1
cd ..
fi
done
cd ..
fi
done