Я пытался запустить скрипт, но я получаю эту ошибку. Что означает и как я могу зафиксировать его?
# Make the mesh using blockMesh (serial) and decompose it.
if [ $runNumber -eq 1 ]
cp constant/polyMesh/blockMeshDict ./
rm -rf constant/polyMesh/*
mv ./blockMeshDict constant/polyMesh
blockMesh > log.blockMesh 2>&1
decomposePar -cellDist -force > log.decomposePar 2>&1
fi
и это - моя ошибка:
./Allrun: line 31: syntax error near unexpected token `fi'
./Allrun: line 31: `fi'
Вы должны добавить , затем после квадратных скобок, потому что тогда IF будет знать, что IF $ runNumber -eq 1 он сделает это.
Итак, правильный сценарий должен выглядеть следующим образом:
if [ $runNumber -eq 1 ]; then
cp constant/polyMesh/blockMeshDict ./
rm -rf constant/polyMesh/*
mv ./blockMeshDict constant/polyMesh
blockMesh > log.blockMesh 2>&1
decomposePar -cellDist -force > log.decomposePar 2>&1
fi
Некоторые примеры на будущее: http://www.thegeekstuff.com/2010/06/bash-if-statement-examples/ [ 111]
if
оператор в ударе похож на это (добавление отступа является дополнительным):
if [ CONDITION ]
then COMMAND1
MORE_COMMANDS
else COMMAND2
MORE_COMMANDS
fi
Или в одной строке:
if [ CONDITION ] ; then COMMAND1 ; MORE_COMMANDS ; else COMMAND2 ; MORE_COMMANDS ; fi
важно, чтобы if
и then
были две отдельных команды (отдельные строки или разделенный ;
), но что then
или else
и первая команда следующего блока кода должна быть одна единственная команда (в той же строке и не разделенный).
, Таким образом, Ваш пример кода должен быть похожим на это:
# Make the mesh using blockMesh (serial) and decompose it.
if [ $runNumber -eq 1 ]
then cp constant/polyMesh/blockMeshDict ./
rm -rf constant/polyMesh/*
mv ./blockMeshDict constant/polyMesh
blockMesh > log.blockMesh 2>&1
decomposePar -cellDist -force > log.decomposePar 2>&1
fi