“синтаксическая ошибка неожиданный маркер fi” при попытке запустить скрипт удара

Я пытался запустить скрипт, но я получаю эту ошибку. Что означает и как я могу зафиксировать его?

# 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'
-1
задан 6 February 2016 в 23:06

2 ответа

Вы должны добавить , затем после квадратных скобок, потому что тогда 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]

1
ответ дан 29 September 2019 в 12:45

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
0
ответ дан 29 September 2019 в 12:45

Другие вопросы по тегам:

Похожие вопросы: