gpt4 book ai didi

shell - 通过 SSH 执行脚本并获取输出?

转载 作者:行者123 更新时间:2023-12-02 18:30:29 26 4
gpt4 key购买 nike

我正在尝试在远程计算机中执行命令并获取输出。

我尝试实现下面的 shell 脚本,但无法获取内容。

#!/bin/bash

out=$(ssh huser@$source << EOF
while IFS= read -r line
do
echo 'Data : ' $line
done < "data.txt"
EOF
)

echo $out

输出:

Data : Data : Data : 

我可以看到“Data :”打印了 3 次,因为文件“data.txt”有 3 行文本。

我无法使用 scp 命令直接获取文件,因为我可能必须在文本文件的位置运行一些命令。

有人可以帮我找到问题吗?

提前致谢。

最佳答案

该问题与 ssh 完全无关:

echo $out

正在破坏您的数据。使用引号!

echo "$out"
<小时/>

同样,您需要引用您的heredoc:

out=$(ssh huser@$source <<'EOF'
while IFS= read -r line; do
printf 'Data : %s\n' "$line"
done < "data.txt"
EOF
)

使用<<'EOF'而不是<<EOF防止$line在代码通过 SSH 发送之前,无法在本地进行扩展;这个本地扩展正在取代 echo 'Data : ' $lineecho 'Data : ' ,因为在您的本地系统上 line变量未设置。

关于shell - 通过 SSH 执行脚本并获取输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135681/

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