如何在 bash 脚本中捕获远程命令的输出。例如
ssh $USERNAME@$SUT<<EOD
COUNT=$(ls -la | wc -l)
EOD
Run Code Online (Sandbox Code Playgroud)
将此计划用于具有多个此类实例的较大脚本,我需要在其中存储和使用远程命令输出。
它应该是:
VAR=$(ssh "$USERNAME"@"$HOST" -- remote_command -option)
Run Code Online (Sandbox Code Playgroud)
您想要remote_command远程执行并将其存储在本地变量中。这就是上面命令的作用。
如果您想远程执行多行命令,请使用以下构造和此处的文档:
VAR=$(ssh "$USERNAME"@"$HOST" <<EOF
remote_command -option
another_command
...
EOF
)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,除非您想将本地变量插入远程命令中,否则您可能希望在此处文档中使用<<'EOF'作为开始分隔符来停用本地 shell 扩展(请注意'):
VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF'
remote_command -option
another_command
...
EOF
)
Run Code Online (Sandbox Code Playgroud)
在上面的形式中,您可以在远程脚本中使用 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
)
Run Code Online (Sandbox Code Playgroud)