Экранирование восклицательного знака в оболочке (отрицание для конструкции if/then)?

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

$ 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

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

26
задан 3498DB
22.12.2022 17:47 Количество просмотров материала 3234
Распечатать страницу

2 ответа

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

$ if [ \! -d mydirectory ]; then echo Yay; else echo Nay; fi
1
отвечен Kerrek SB 2022-12-24 01:35

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

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

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

0
отвечен sdaau 2022-12-24 03:52

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх