【发布时间】:2017-01-01 02:20:48
【问题描述】:
我有一个文件夹,里面有很多重复的旧照片。手动排序需要很长时间,所以我想借此机会使用 bash。
现在我有代码:
#!/bin/bash
directory="~/Desktop/Test/*"
for file in ${directory};
do
for filex in ${directory}:
do
if [ $( diff {$file} {$filex} ) == 0 ]
then
mv ${filex} ~/Desktop
break
fi
done
done
并获得退出代码:
diff: {~/Desktop/Test/*}: No such file or directory
diff: {~/Desktop/Test/*:}: No such file or directory
File_compare: line 8: [: ==: unary operator expected
我尝试修改我在网上找到的工作代码,但它似乎总是吐出一些这样的错误。我猜这是嵌套 for 循环的问题?
另外,为什么调用变量的方式似乎不同?我见过使用${file}, "$file", and "${file}" 的例子。
【问题讨论】:
-
尝试分配完整路径。
directory="/home/someuser/Desktop/Test/*"或者,不要使用引号。directory=~/Desktop/Test/*引号似乎会导致扩展波浪号出现问题。 -
我现在无法对其进行测试,但我想我尝试过并得到了同样的错误。