Я задал вопрос раньше. Ответ имел смысл, но я никогда не смог заставить его работать. И теперь я должен заставить его работать. Но я не могу понять утверждения BASH if. Что я делаю неправильно ниже:BASH если условия
START_TIME=9
STOP_TIME=17
HOUR=$((`date +"%k"`))
if [[ "$HOUR" -ge "9" ]] && [[ "$HOUR" -le "17" ]] && [[ "$2" != "-force" ]] ; then
echo "Cannot run this script without -force at this time"
exit 1
fi
Идея заключается в том, что я не хочу этот скрипт, чтобы продолжить выполнение, если не приходится, в течение часа с 9 утра до 5 вечера. Но он всегда будет оценивать условие true и, таким образом, не позволит мне запускать скрипт.
./script.sh [действие] (-force)
Thx
Редактировать: Выход множества -x:
$ ./test2.sh restart
+ START_TIME=9
+ STOP_TIME=17
++ date +%k
+ HOUR=11
+ [[ 11 -ge 9 ]]
+ [[ 11 -le 17 ]]
+ [[ '' != \-\f\o\r\c\e ]]
+ echo 'Cannot run this script without -force at this time'
Cannot run this script without -force at this time
+ exit 1
, а затем с -Force
$ ./test2.sh restart -force
+ START_TIME=9
+ STOP_TIME=17
++ date +%k
+ HOUR=11
+ [[ 11 -ge 9 ]]
+ [[ 11 -le 17 ]]
+ [[ '' != \-\f\o\r\c\e ]]
+ echo 'Cannot run this script without -force at this time'
Cannot run this script without -force at this time
+ exit 1
Какую версию Баш вы используете? Он отлично работает на моем: 3.2.49. –
Это GNU bash, версия 3.2.39 (1) -release (i686-pc-linux-gnu). Я чувствую себя очень глупо, что вышеупомянутое не сработает. Всегда переходит в режим ошибок. Не знаю, почему. – Daniil
«Режим ошибки» - Что вы подразумеваете под этим? Есть ли сообщение об ошибке? –