有两个系统 - 本地和远程。
在本地系统上,我运行脚本:
#!/bin/bash
login=dev #login for ssh remote server
host=192.168.1.1 #host remote server
r_path=/home/dev/files/ #folder remote server
l_path=/home/dev/from_server #local folder
tar_name=archive.tar #archive name for files
ssh $login@$host "
cd $r_path
pwd
tar -cvf $tar_name ./*
md5sum $tar_name
"
脚本中的变量被传输到远程系统。一切都很好。
我在 md5 输出中得到一个远程存档字符串,我需要在本地系统上处理它。如何在变量中传输这个字符串并在本地机器上处理它?
UPD1:如果我尝试将变量分配给 md5sum,
ssh $login@$host "
cd $r_path
tar -cvf $tar_name ./*
md5=$(md5sum $tar_name)
echo $md5
"
echo $md5
实际上,变量并没有“传送”到远程系统,而是在本地机器的命令行中替换,然后才将整个命令发送到远程主机。
您可以使用或以老式方式将命令的输出分配给
ssh
变量,就像任何其他命令的结果一样:$()
``
笔记:
&&
,这样如果其中一个不工作,其余的就不会启动。如果它已经在本地机器上运行,为什么不能将它添加到脚本本身?将 md5 输出分配给一个变量并立即处理它?
md5forwork=$(md5sum $tar_name)
$md5forwork
如果这不合适,那么我会将命令的输出写入一个单独的文件,然后用另一个脚本加载它并使用它。