如何在smbclient命令中导致变量扩展?

时间:2014-02-05 18:05:36

标签: bash shell variables smb

我正在运行以下命令:

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范围内进行评估。

我怎样才能让它发挥作用?

1 个答案:

答案 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 '`;