이렇게 하면 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줄의 출력을 보고 싶습니다.
답변1
명령 출력에 캐리지 리턴(CRLF 또는 \r\n
DOS의 경우)이 포함된 경우 효과는 다음과 같습니다.
$ text=$( printf 'A\r\nB\r\nC\r\n' )
$ echo $text
C
그러나 에코할 때 변수가 올바르게 인용된 경우:
$ echo "$text"
A
B
C