@gagareg

Почему так работает if в bash?

Добрый день, есть вот такой простой скрипт

NAME=$1
FORMAT=$2
INPUT_FILE=$3
DATA=$(date "+%Y-%m-%d")
ARHIVE_NAME=$(echo $NAME-$DATA.$FORMAT)

# tar or zip
if [[ "$FORMAT"=="tar" ]]; then
    tar cf $ARHIVE_NAME $INPUT_FILE 
    echo "tar successfully"
elif [[ "$FORMAT"=="zip" ]]; then
    zip $ARHIVE_NAME $INPUT_FILE
    echo "zip successfully"
fi


Почему независимо от второго параметра, он всегда выводит tar successfully,

~/Documents/Bash/bash-scripting
❯ bash creating-archives.sh isamarskiy zip file
tar successfully

~/Documents/Bash/bash-scripting
❯ bash creating-archives.sh isamarskiy tar file
tar successfully

❯ ls
creating-archives.sh  file  isamarskiy-2020-04-18.tar  isamarskiy-2020-04-18.zip


Как мы видим архивы создаются, но если указать zip, то echo почему-то не срабатывает.

Что я не так делаю?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@xupyp1
У тебя в итоге в любом случае получается tar (проверь, попробуй распаковать)
Расширение ты вставляешь через переменную, но if отрабатывает только по первому условию.
Тупо ошибка в синтаксисе
[[ "$FORMAT"=="tar" ]]
замени на
[[ "$FORMAT" == "tar" ]]
с zip аналог
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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