Что делает> &2, означают в сценарии оболочки?

Я делаю свою домашнюю работу, и у меня есть вопрос об одной строке. Я не понимаю что это >&2 средства:

if test -d $2 
  then echo "$2: Is directory" >&2 ; exit 21
fi
3
задан 22 October 2019 в 05:25

3 ответа

Это просто отправляет сообщение об ошибке "/blah/blah/: каталог" к stderr вместо stdout:

сообщения для stdout и stderr, все еще появится на Вашем экране. Некоторые приложения будут рассматривать stderr сообщения по-другому, хотя и выполняют специальную обработку.

Большинство людей не потрудилось перенаправлять echo сообщения об ошибках к >&2, но это - технически корректный способ сделать вещи.

7
ответ дан 1 December 2019 в 13:03

Дескриптор файла 1 stdout, и Дескриптор файла 2 stderr.

Используя > для перенаправления вывода совпадает с использованием 1>. Это говорит для перенаправления дескриптора файла 1, который является stdout.

Обычно, мы перенаправляем в файл. Однако мы можем использовать & для перенаправления к дескриптору файла вместо этого.

Поэтому для перенаправления stdout (дескриптор файла 1) к stderr (дескриптор файла 2) можно использовать >&2.

щелкают здесь для получения дополнительной информации

дополнительный источник

5
ответ дан 1 December 2019 в 13:03

Итак, if test -d $2 Означает, что если $2(второй аргумент) является каталогом, то

echo "$2: Является каталогом" >&2 означает, что print $2: это каталог,

и >&2 означает отправку вывода в STDERR, Таким образом, он напечатает сообщение как ошибку на консоли.


Вы можете узнать больше о перенаправлении оболочки из этих ссылок:

1
ответ дан 21 March 2020 в 21:13

Другие вопросы по тегам:

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