У вас уже есть проблемы с синтаксисом.
То, что у вас есть в псевдокоде, примерно так:
if d3 equals 0 then
set d4 equal to ((d2/10)+1000)
else
set d4 equal to (d2/10)
end if
что переводится как, в bash (что вы, скорее всего, будете использовать для сценариев оболочки в Linux):
if test "$d3" -eq "0"; then
d4=$(( ( $d2 / 10 ) + 1000 ))
else
d4=$(( $d2 / 10 ))
fi
Чтобы завершить оператор fi
, вам нужно использовать if
, а $(( ... ))
- это арифметическое расширение в bash. Обратите внимание, что $( ... )
совершенно другой; это подстановка процесса, которая берет выходные данные данной команды и возвращает их. Очень полезно, но не совсем то, что вы после здесь.
Выше предполагается, что $d2
, $d3
и $d4
уже установлены на правильные значения, и что нет переменных среды с установленными конфликтующими именами.
Если вы точно знаете , что $d3
никогда не будет содержать ничего, кроме цифр, вы можете покончить с цитированием в параметрах для test
, но я бы хотел оставить его в качестве защитной сетки. Чтобы узнать больше о том, что вы можете сделать с помощью test
(в bash), взгляните на man bash
под заголовком встроенных команд Shell . Другие оболочки могут использовать внешнюю команду, в этом случае применяется man test
(вы можете использовать внешнюю команду в bash, например, через if command test ...; then
если вы предпочитаете это по какой-то причине).
Точка с запятой перед then
необходима, потому что then
самом деле это отдельная команда в bash; Вы можете также положить then
на отдельной строке и опустить точку с запятой, что является еще одним способом форматирования точно то же самое.