如何使用字符串分隔符将标准输出重定向到标准输出



我需要执行一个命令列表,并用唯一的字符串分隔符将它们分开:

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:~$ 

之后它会破坏其他命令执行,我怎样才能让所有输出被字符串分隔?

&&运算符意味着仅在前一个命令成功时才执行其余命令。如果命令不成功,命令序列将停止。

如果要执行所有命令,而不考虑先前命令是否成功,请使用;而不是&&

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

最新更新