cat выдает другую ошибку при открытии несуществующего файла

Вы можете проверить с помощью curl:

url="http://website.url/directory/file.txt"

if curl -f ${url} >/dev/null 2>&1; then
  bash some_bash_script.sh
else
  exit 0
fi

Это будет работать, только если сервер вернет 404 в случае, если файл не существует. Если сайт не возвращает 404, вам нужно будет адаптировать команду if check, возможно, проверив вывод curl.

{{ 1}}
22
24.11.2016, 14:18
2 ответа
cat foo

Это запускает команду cat с аргументом foo . Ошибка, выводимая на экран, полностью зависит от того, что решил программист команды.

cat < foo 

Это передает содержимое файла foo команде cat с помощью перенаправления стандартного ввода Bash . Если файл не существует, на него жалуется Bash.

30
27.01.2020, 19:42

В $ cat foo оболочка (здесь bash) выполняет команду cat и передает параметр foo . Программа cat решает интерпретировать этот параметр как имя файла и пытается открыть файл. Вы видите ошибку из-за программы cat, которая (естественно) не может открыть файл.

Версия $ cat - это перенаправление, которое обрабатывается оболочкой. < - оператор оболочки, который инструктирует оболочку открыть файл и перенаправить его на стандартный ввод. Файл не существует, поэтому вы получите сообщение «Нет такого файла». На этот раз ошибка исходит из оболочки (bash) и выглядит немного иначе.

Вот почему вы видите 2 разные ошибки. Причина та же, но от двух разных программ (cat и bash).

21
27.01.2020, 19:42

Теги

Похожие вопросы