В команде, где у нас есть много труб, перенаправляющих их выходы, есть ли способ узнать ценность эхо? До половины его исполнения или до определенного количества труб, в отличие от общего состояния всей команды?
В Bash есть вариабельность Pipestatus
, которая представляет собой массив, содержащий состояние выхода каждой команды в самом последнем конвейере.
$ ls -lrt --time-style=+"%b %d %Y %H:%M:%S" /bin/*|head -1|tr -s " "| \
cut -d " " -f 9|date --date - +%s
1429070400
$ echo ${PIPESTATUS[@]}
141 0 0 141 0
$ kill -l `expr 141 - 128`
PIPE
Это говорит нам, что LS
и командам
, вырезанные с помощью SIGPIPE, который ожидается, что их вывод не был полностью потребляется следующей командой в трубопроводе.
В первой неразрушенной команде я все еще получаю вывод без каких-либо ошибок и не то, что я ожидаю.
Это связано с датой дата
команда , работающая как она ожидает, но, я думаю, не так, как вы ожидаете.
Дата --дата -
не читает дату от stdin; Вместо этого он использует -
как строка даты. Я не вижу, где подразумевается значение одинокого -
, но, похоже, совпадает как 0
или 0000
, что означает «полуночь сегодня".
Возможно, подсказки, определенные в / etc / profile
, перезаписывается подстановочный пользовательский настроек в ~ / .profile
?