如何在bash脚本中捕获远程命令的输出。 例如
ssh $USERNAME@$SUT<<EOD
COUNT=$(ls -la | wc -l)
EOD
为具有多个此类实例的更大脚本进行规划,我需要存储并使用远程命令输出。
答案 0 :(得分:2)
应该是:
VAR=$(ssh "$USERNAME"@"$HOST" -- remote_command -option)
您希望远程执行remote_command
并将其存储在本地变量中。这就是上面命令的作用。
如果要远程执行多行命令,请使用以下构造和doc:
VAR=$(ssh "$USERNAME"@"$HOST" <<EOF
remote_command -option
another_command
...
EOF
)
顺便说一句,除非你想将局部变量插入到远程命令中,否则你可能希望使用<<'EOF'
作为起始分隔符来禁用本文档中的本地shell扩展(注意'
):
VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF'
remote_command -option
another_command
...
EOF
)
在上面的表单中,您可以在远程脚本中使用shell变量,命令替换等。像这样:
VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF'
COUNT=$(remote_command -option)
another_command "${COUNT}"
if $((COUNT+1)) ; then
foo -bar
fi
... and so on. all expansions happen remotely
EOF
)