gpt4 book ai didi

shell - 将通过 ssh 运行的脚本的输出存储在变量中

转载 作者:行者123 更新时间:2023-12-02 13:51:35 24 4
gpt4 key购买 nike

我正在尝试将通过 SSH 运行的脚本(驻留在远程服务器上)的输出捕获到一个变量中,下面是我的代码:

ssh username@hostname << EOF
variable=`./script_on_remote_server.sh`
echo $variable
EOF

当我运行上面的脚本时,变量中没有存储任何内容,该变量的 echo 也没有返回任何内容。

我做错了什么?

最佳答案

我将从展示实现此目的的一种方法开始:

variable=`echo ./script_on_remote_server.sh | ssh username@hostname`

或者,如果您使用的是 bash,我更喜欢这种语法:

variable=$(echo ./script_on_remote_server.sh | ssh username@hostname)

从您的帖子中有点难以分辨,但看起来您正在尝试执行以下操作:

ssh username@hostname <<EOF
variable=./script_on_remote_server.sh
echo $variable
EOF

然而,这里有一些误解。 variable=command 不是将命令输出分配给变量的正确语法;事实上,它甚至不运行命令,它只是将文字值 command 分配给 variable。您想要的是 variable=`command` 或(在 bash 语法中)variable=$(command)。另外,我假设您的目标是让本地计算机上的 shell 可以使用 variable。在要在远程计算机上运行的代码中声明 variable 不是这样做的方法。 ;) 即使你这样做了:

ssh username@hostname <<EOF
variable=`./script`
echo $variable
EOF

这只是像往常一样在远程主机上运行命令的一种效率较低的方法,因为 variable 会立即丢失:

echo ./script | ssh username@hostname

另外,请注意 ssh 命令接受一个作为附加参数运行的命令,因此您可以将整个命令缩写为:

variable=`ssh username@hostname ./script_on_remote_server`

关于shell - 将通过 ssh 运行的脚本的输出存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com