В строке
month=$($date | cut -f1 -d' ')
вы выполняете все, что находится в $date
, как команду и передаете ее вывод в cut
.
Я думаю, вы хотите
month=$( printf '%s\n' "$date" | cut -f 1 -d ' ' )
здесь.
Кроме того, не смешивайте обратные апострофы и $(...)
в одном скрипте, это сбивает с толку. Просто используйте вместо этого $(...)
.
Сравнение строк выполняется с помощью =
:
if [ "$month" = "April" ]; then
Убедитесь, что ваши переменные заключены в двойные кавычки. См. Последствия для безопасности, если забыли заключить переменную в кавычки в оболочках bash/POSIX
. Целочисленные арифметические операции могут быть выполнены с использованием $(( выражение ))
. выражение
устарело.
j1=$(( "$1" ))
j2=$(( "$2" ))
...
j1=$(( j1 + 1 ))