我正在尝试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脚本创建具有远程主机的目录列表列表的局部变量的任何想法?
答案 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命令之前执行。逃避单引号应该修复