Как перенаправить stderr на стандартный вывод с разделителем строк - PullRequest
0 голосов
/ 08 октября 2019

Мне нужно выполнить список команд и отделить их с помощью уникального разделителя строк:

ls -l 2>&1 && echo "__UNIQUE_SEPARATOR" && sls -l  2>&1 && echo "__UNIQUE_SEPARATOR" && pwd

Чтобы обработать его и разделить по выходам, но по какой-то причине после перенаправления stderr, когда команда не выполненаон не печатает следующий разделитель строк:

maulinux@ubuntu:~$ ls -l 2>&1 && echo "__UNIQUE_SEPARATOR" && sls -l  2>&1 && echo "__UNIQUE_SEPARATOR" && pwd
total 40
-rw-rw-r-- 1 maulinux maulinux   29 Oct  7 20:22 '&1'
drwxr-xr-x 5 maulinux maulinux 4096 Sep 26 15:22  Desktop
drwxr-xr-x 2 maulinux maulinux 4096 Aug 19 10:54  Documents
drwxr-xr-x 3 maulinux maulinux 4096 Aug 28 12:31  Downloads
drwxr-xr-x 2 maulinux maulinux 4096 Aug 19 10:54  Music
drwxr-xr-x 2 maulinux maulinux 4096 Aug 19 10:54  Pictures
drwxr-xr-x 2 maulinux maulinux 4096 Aug 19 10:54  Public
drwxr-xr-x 3 maulinux maulinux 4096 Aug 19 10:54  snap
drwxr-xr-x 2 maulinux maulinux 4096 Aug 19 10:54  Templates
drwxr-xr-x 2 maulinux maulinux 4096 Aug 19 10:54  Videos
__UNIQUE_SEPARATOR

Command 'sls' not found, but there are 21 similar ones.

maulinux@ubuntu:~$ 

И после этого он прерывает выполнение других команд, как я могу получить все выходные данные, разделенные строкой?

1 Ответ

1 голос
/ 08 октября 2019

Оператор && означает выполнение оставшихся команд только в случае успешного выполнения предыдущей команды. Если команда не выполняется, последовательность команд останавливается.

Используйте ; вместо &&, если хотите выполнить все команды независимо от успеха предыдущих.

ls -l 2>&1 ; echo "__UNIQUE_SEPARATOR" ; sls -l  2>&1 ; echo "__UNIQUE_SEPARATOR" ; pwd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...