Bash

ssh 遠端執行 - 問題

  • February 12, 2017

這將列印 4 行:

ssh root@remote_ip "service iptables restart"

輸出:

iptables: Flushing firewall rules: [  OK  ]
iptables: Setting chains to policy ACCEPT: filter [  OK  ]
iptables: Unloading modules: [  OK  ]
iptables: Applying firewall rules: [  OK  ]

**VAR=$()**內部的相同命令

VAR=$(ssh root@remote_ip "service iptables restart")
echo $VAR

這次它只列印這一行:

iptables: Applying firewall rules: [ OK ]: filter [ OK ]

該行甚至不是標準 4 行輸出中的一行。

對我來說沒有意義。

另外..我想看到像原來的4行輸出。

如果命令的輸出包含輸入符(CRLF 或\r\nDOS 那樣),這將是效果:

$ text=$( printf 'A\r\nB\r\nC\r\n' )
$ echo $text
C

但是,如果您在回顯時正確引用變數:

$ echo "$text"
A
B
C

引用自:https://unix.stackexchange.com/questions/344484