我需要执行一个命令列表,并用唯一的字符串分隔符将它们分开:
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