Как вывести одну команду с tee на стандартный вывод, а также передать ее другой команде?

Вместо $3 in a{print $1,$2,$3}попробуйте !($3 in a){$0 = ""} 1.

0
23.08.2020, 17:38
1 ответ

Чтобы объяснить вашу проблему с трубой:

Давайте разобьем его на более мелкие части:

$ cat <<< "abc"--> Эта команда передает строку "abc" на стандартный ввод команды слева, то естьcat.

| tee > (> /dev/null)--> Командаteeполучает ввод от командыcatпутем чтения стандартного ввода, передает файл -вывода в /dev/null, а затем записывает строку «abc» в стандартный вывод.

| пока читал я; сделать эхо "$i"; done--> Команда read считывает строку «abc» из стандартного ввода и сохраняет строку «abc» в переменнойi , а затем ваш цикл печатает содержимоеiэто строка "abc" -и только один раз.

Командаteeничего не выводит на терминал, потому что ее вывод передается командеread .

Вы можете попробовать вместо этого записать стандартный вывод в файл.

user@host:~$ cat <<< "abc"| tee file_name.txt | while read i; do echo $i >> file_name.txt; done; cat file_name.txt
0
28.04.2021, 23:13

Теги

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