我使用sftp:
从远程计算机将一些文件复制到我的机器上ssh user@remote_host '
find /file/location -type f -maxdepth 1 -size +400000c -name "TEXT_*"
'>> log
cat log | while read line; do
sftp user@remote_host <<EOF
get $line
EOF
done
rm log
我现在要做的是检查复制文件的文件大小是否与远程计算机上的文件相同。这就是我试过的:
ls -1 TEXT* | while read line;
do var=$(stat "/file/on/current/machine/$line");
var2=`ssh -n user@remote_host 'ls -l /file/on/remote/$line | cut -d " " -f5 '`;
if [ "$var" == "$var2" ];
then
echo "The file $line has the same dimension!";
else
echo "The file $line doesn't have the same dimension";
fi;
done
问题是在ssh命令中无法识别变量$ line,它返回远程主机上所有文件的大小,而不仅仅是已复制的文件的大小。
谢谢!
答案 0 :(得分:2)
这是因为$line
在单引号内。变量仅以双引号插值。
var2=$(ssh -n user@remote_host "ls -l /file/on/remote/$line | cut -d ' ' -f5 ")