我正在运行以下命令:
FILES=`/usr/bin/find /u01/app/dw/admin/dgwspool -type f -daystart -mmin -1621`;
/usr/bin/smbclient //techshare.something.com/Depts/ -I 129.0.0.1 -D ITIS/deptshare/degreeworks/Test -U domain\\user%password -c "prompt off; mput $FILES"
我测试了这个,$ FILES变量填充了一个以空格分隔的文件名列表。 smblclient命令连接到我希望的Windows共享,如果我输入一个硬编码的文件名,它会将文件(或文件)复制到共享。
似乎正在发生的事情是$ FILES变量未展开,或者正在某个内部smbclient范围内进行评估。
我怎样才能让它发挥作用?
答案 0 :(得分:1)
我的精神力量告诉我你用echo $FILES
测试了这个,它在一行上打印了所有文件,让你相信$FILES
是空格分隔的。不是这种情况。
对于echo $FILES
,shell单词将空格和换行符上的变量拆分为多个参数,然后echo
与空格连接。如果您使用echo "$FILES"
,您会发现它实际上是换行符分开的。
快速解决方法是打印分隔的文件名空间(需要GNU查找或其他查找-printf
)。根据评论,它也省略了搜索路径:
FILES=`/usr/bin/find /u01/app/dw/admin/dgwspool -type f -daystart -mmin -1621 -printf '%P '`;