Должен ли я добавить «> & 2» в конце команды echo?

Например

#!/bin/bash INT=-5 if [[ "$INT" =~ ^-?[0-9]+$ ]]; then echo "INT is an integer." else echo "INT is not an integer." >&2 exit 1 fi 

Когда я удаляю «> & 2». Нет ничего другого. Почему мне нужно добавить «> & 2»,

Разница заключается в следующем:

 echo "INT is an integer." 

пишет на стандартную версию, и

 echo "INT is not an integer." >&2 

пишет стандартную ошибку.

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

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

Поэтому, если у вас есть сценарий в середине конвейера, INT is an integer. будет продолжаться вниз по конвейеру, а INT is not an integer которое будет печататься на вашем экране, а не идти в конвейер.

Эта строка объединяет стандарт в стандартную ошибку. Вы делаете это, и вы хотите увидеть результат стандартной ошибки. Не уверен, почему вы думаете, что это будет необходимо.