通过ssh将目录列表分配给bash脚本中的变量

时间:2011-10-05 22:18:36

标签: bash ssh

我正在尝试ssh到远程计算机,获取目录列表,将其分配给变量,然后我希望能够在本地计算机上的其余脚本中使用该变量。

经过一些研究和设置所有正确的键等,我可以通过ssh运行命令就好了。具体来说,如果我这样做:

ssh -t user@server "ls /dir1/dir2/; exit; bash"

我的目录列表。如果我改为:

ssh -t user@server "set var1=`ls /dir1/dir2/`; exit; bash"

而是给出一个ls错误,找不到目录。另外值得注意的是,这是在我被要求输入ssh密钥密码之前发生的,这让我觉得它以某种方式在本地执行。

关于如何使用bash脚本创建具有远程主机的目录列表列表的局部变量的任何想法?

2 个答案:

答案 0 :(得分:3)

简单地

var1=( $(ssh user@server ls /dir1/dir2) )

然后测试它:

for line in "${var1[@]}"; do echo "$line"; done

那就是说,我更喜欢

ssh user@server find /dir1/dir2 -maxdepth 1 -print0 | 
    xargs -0

这将

  • 使用特殊文件名处理得更好
  • 更灵活(man find(1)
  • 仅限-type f限制文件

答案 1 :(得分:0)

您的命令在执行ssh命令之前执行。逃避单引号应该修复