Я новичок в bash (разработчик PHP, выдававший себя за системного администратора Linux).
У меня есть следующее, если блок в скрипте bash:

 if [ "$DAY"=="Sunday" ];
 then
 cp /Drive_D/videos_bu/daily/$TODAY /Drive_D/videos_bu/weekly/$WEEK
 printf "\n==========\nWeekly Backup - $TODAY SUCCESS!\n==========\n\n" >> $LOG
 fi

Строка printf выполняется, даже когда команда test ложна. Кто-нибудь может сказать мне, почему?

ТИА

Роджер

1 ответ1

7

Из-за того, что у вас нет оператора и операндов, разделенных пробелами, интерпретатор принимает весь элемент в виде строки, отличной от пустой строки, и переходит в ветвь then . Измените ваше состояние на:

if [ "$DAY" == "Sunday" ];

для того, чтобы получить ожидаемый результат. Вот полезный пост.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .