ssh 命令中的 while 循环

ssh 命令中的 while 循环

我需要连接到远程计算机,然后获取信息并通过管道进行while循环。

ssh [email protected] "find ~/listfile/ -iname \"*log*\" |while read line; do cat $line; done"

上面的命令打印空行。我尝试find自行检查命令,它确实有效并列出了文件。

ssh [email protected] "find ~/listfile/ -iname \"*log*\""

如何查看找到的文件的内容?

答案1

find如果您要在远程服务器中列出具有匹配名称的文件,并且仅添加 if files ,则应该单独使用-type f

ssh USER@HOST 'find ~/listfile/ -type f -iname "*log*" '

如果您需要cat找到的文件的内容,请findcat如下方式使用。

ssh USER@HOST 'find ~/listfile/ -type f -iname "*log*" -exec cat {} +'

您的具体问题是$line由本地 shell 扩展,因为它用双引号引起来。但无论如何,你的方法是循环find结果的错误方法。看为什么循环查找的输出是不好的做法?了解详情。

相关内容