![使用 std 输入/输出重定向的 shell 命令中的顺序和空格](https://linux22.com/image/172333/%E4%BD%BF%E7%94%A8%20std%20%E8%BE%93%E5%85%A5%2F%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E7%9A%84%20shell%20%E5%91%BD%E4%BB%A4%E4%B8%AD%E7%9A%84%E9%A1%BA%E5%BA%8F%E5%92%8C%E7%A9%BA%E6%A0%BC.png)
抱歉,我有一段时间没有使用 shell 脚本了。在教程中《如何运行 Openthread 边界路由器》
提供的步骤:
socat -d -d pty,raw,echo=0 pty,raw,echo=0
2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/2
2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/7
2018/09/06 09:58:29 socat[242994] N starting data transfer loop with FDs [5,5] and [7,7]
记下输出中的两个串行端口。
然后是 CLI 命令:
~/openthread/output/x86_64-unknown-linux-gnu/bin/ot-ncp-ftd 1 \
> /dev/pts/2 < /dev/pts/2
输入这些命令不会给出正确的结果。从 shell 编程的角度来看,最后一个命令的含义是什么(我相信它重定向了程序的输入/输出)?最后一个命令是否正确(注意 - 它使用相同的端口 2)?在我的例子中,程序获得超过 4 个参数(我在调试器中看到),并且 shell 不将参数视为重定向,而是 shell 将所有参数传递给程序。用两行写命令重要吗?如何用一行表示?