我需要执行一系列命令并用唯一的字符串分隔符将它们分开:
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
关于linux - 如何使用字符串分隔符将 stderr 重定向到 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58278801/