Я часто использую это непосредственно в оболочке, чтобы проверить результат для сценариев, и он отлично работает:

$ if [ -d mydirectory ] ; then echo YES ; fi
YES

Однако, если я хочу использовать отрицание, используя восклицательный знак, он завершается с ошибкой (ну, на самом деле, не сбоит, но переходит в многострочный режим в ожидании ввода с клавиатуры, и мне нужно выйти с помощью Ctrl-C):

$ if [ ! -d makehuman ] ; then echo YES ; if
> 
> ^C
$ if [ \! -d makehuman ] ; then echo YES ; if
> 
> ^C

Как я могу использовать восклицательный знак отрицания прямо в оболочке?

2 ответа2

1

В командной строке Bash восклицательный знак можно экранировать с помощью обратной косой черты, как и все специальные символы. Не забывайте правильный синтаксис if !

$ if [ \! -d mydirectory ]; then echo Yay; else echo Nay; fi
0

Это была синтаксическая ошибка, приведенные выше команды должны заканчиваться на fi if

$ if [ ! -d mydirectoryNO ] ; then echo YES ; fi
YES

Во всяком случае, я также нашел эту хорошую ссылку: классическая команда тестирования [Bash Hackers Wiki]

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