Если Вы используете isc-dhcp-client
, условия сделаны для "сценариев рычага", которые будут работать на различных этапах процесса DHCP, включая то, когда адрес будет получен. /etc/dhcp/dhclient-enter-hooks.d
или подобный.
2>
перенаправляет стандартную погрешность cat
. cat
не выполняется однако, потому что удар не может открыть файл, к которому Вы указали как стандартный вход cat
. Для получения поведения, Вы хотите, используете
(cat < foo) 2> bar
Это будет работать cat < foo
в подоболочке и перенаправлении вывод ошибок удара к панели. Если Вы также хотите вывод ошибок от кошки, Вы могли бы сделать
(cat < foo 2> bar) 2> bar2
Как @Casey примечания, помещая команду в подоболочку работает:
$ ( cat <foo ) 2>bar
Однако подоболочка не необходима. Простой список работает точно также:
$ { cat <foo ; } 2>bar
Вам даже не нужен список, если Вы замечаете, что порядок, в котором сделаны перенаправления, имеет значение:
$ cat <foo 2>bar
bash: foo: No such file or directory
$ cat 2>bar <foo
Мое заключение состоит в том, что то, что имеет значение, является заказом обработки удара: проблема - был ли stderr перенаправлен прежде или с момента, когда удар обнаруживает, что перенаправление stdin перестало работать. Таким образом нет никакого вывода от последнего примера выше, потому что удар сначала перенаправляет stderr и затем пытается открыть нечто для stdin.