Команда [[-e $ file]] в unix - PullRequest
       0

Команда [[-e $ file]] в unix

0 голосов
/ 19 февраля 2020

Я относительно новичок в командной строке unix и не совсем понимаю, что делает эта команда:

[[ ! -e "$text_file" ]] || { echo "Error: I cannot overwrite '$text_file'." >&2;}

У кого-нибудь есть идеи?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Прежде всего, он проверяет 2 условия с логическим ИЛИ || operator.

-e FILE - Истина, если ФАЙЛ существует и является файлом, поэтому условие отменяет результат этой проверки.

, а затем, если значение равно false, он отправляется и печатает сообщение и отправьте его в stderr (> & 2). Если первое условие истинно, то второе условие не будет оцениваться (конечно, это логический ИЛИ способ работы по умолчанию)

В Unix -world, stdout обычно используется, когда все работает правильно, а stderr обычно используется для печати сообщений, когда что-то идет не так.

По умолчанию stdout и stderr выводят на экран. Основное отличие состоит в том, что> и | операторы по умолчанию перехватывают stdout, но не stderr.

Вы также можете проверить другие вещи, как показано ниже:

-r FILE - True, если файл существует и доступен для чтения.
-w FILE - Истинно, если ФАЙЛ существует и доступен для записи.
-x ФАЙЛ - Истинно, если ФАЙЛ существует и является исполняемым.
-d ФАЙЛ - Истинно, если ФАЙЛ существует и является каталогом.
-e ФАЙЛ - Истинно, если ФАЙЛ существует и является файлом, независимо от его типа (узел, каталог, сокет и т. Д. c.).
-f ФАЙЛ - Истинно, если ФАЙЛ существует и является обычным файлом (не каталогом или устройством). )

0 голосов
/ 19 февраля 2020

Это проверяет файл на наличие и! Отменяет выражение См. список bash файл тестирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...