Ошибки Bash

Содержание
stderr
!#/bin/bash: not found
VAR: command not found
Похожие статьи

stderr

Ошибки выводятся в терминал не так как обычные сообщения.

Обычные сообщения это stdout порядковый номер 1

Ошибки это stderr порядковый номер 2

Рассмотрим пример сообщения об ошибке.

Для этого выполним листинг несуществующей директории

ls /etcw

ls: cannot access '/etcw': No such file or directory

Попытка перенаправить ошибку в файл с помощью > ни к чем не приведет

ls /etcw > err

zsh: file exists: err

Причина в том, что > это эквивалент 1> а нам нужно 2>

ls /etcw 1> err
cat err

ls: cannot access '/etcw': No such file or directory

Часто сообщения об ошибках идут вперемешку с обычными.

Например, нужно выполнить поиск в директории где часть поддиректорий недоступны по причине нехватки прав.

find /etc -type l

/etc/mtab find: ‘/etc/grub.d’: Permission denied /etc/pki/ca-trust/source/ca-bundle.legacy.crt /etc/pki/java/cacerts /etc/pki/tls/cert.pem /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.trust.crt find: ‘/etc/pki/CA/private’: Permission denied find: ‘/etc/pki/Pegasus’: Permission denied find: ‘/etc/pki/rsyslog’: Permission denied …

Чтобы не отвлекаться на ошибки их можно перенаправить в /dev/null

find /etc -type l 2> /dev/null

/etc/mtab /etc/pki/ca-trust/source/ca-bundle.legacy.crt /etc/pki/java/cacerts /etc/pki/tls/cert.pem /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.trust.crt /etc/systemd/system/multi-user.target.wants/remote-fs.target /etc/systemd/system/multi-user.target.wants/crond.service /etc/systemd/system/multi-user.target.wants/rhel-configure.service /etc/systemd/system/multi-user.target.wants/libstoragemgmt.service …

Если нужно перенаправить и ошибки и стандартный вывод выполните:

find /etc -type l &> everything.log

1: !#/bin/bash: not found

Ошибка

1: !#/bin/bash: not found

Возникает если перепутать местами ! и # в первой строке скрипта

Правильно писать

#!/bin/bash

VAR: command not found

Ошибка

VAR: command not found

Возникает если перепутать при присвоении значения переменной поставить пробел у знака равенства

Правильно писать

VAR='https://eth1.ru'

Неправильно писать

VAR = 'https://eth1.ru'

Вокруг = не должно быть пробелов.

Похожие статьи
Bash
Основы Bash
alias: Псевдонимы
Bash Scripting
-eq -gt …: Операторы сравнения
if else: Условные операторы
Цикл while
date: Дата
Переход на новую строку
Арифметические операции
sftp: Передать файл или пароль в Bash скрипте
Мониторинг потребления памяти
Работа с файлами в директории
awk
grep
sed
Ошибки Bash
Zsh
Изображение баннера

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: