linux - 如何使用字符串分隔符将 stderr 重定向到 stdout

标签 linux unix ssh

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

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/

相关文章:

linux - 为什么 echo 显示命令本身而不是命令输出

linux - 同一台机器上的两个版本的 Docker 数据卷?

linux - Openfire xmpp 服务器和 Spectrum 2 IM Solaris 和 Linux

linux - 如何在命令行中编写R?如何从命令行加载工作区?

c - 我如何使用变量类型标记此输入行,以便我可以决定保存我的信息的结构的大小?

ssh - 使用 pscp 命令时获取 "Command not found"

c - 从 C 中的线程返回一个值

xml - 如何使用 awk 解析逗号分隔值 (csv)?

linux - DC/OS ssh 连接在端口 22 上被拒绝 - 预检

ssh - 由于 ssh 原因,gitkraken 推送失败