我的bash脚本安全删除文件不适用于多个文件。我不知道为什么

时间:2017-05-04 18:44:04

标签: bash iteration

我正在尝试创建一个删除脚本,该脚本使用正则表达式将所有匹配的文件移动到我的主目录中的Trash文件夹。我希望能够使用与vanilla rm命令相同的语法,但不能永久删除它。我似乎无法通过pwd中的所有匹配文件来运行它。它将移动一个文件,然后退出。这是我的剧本。

file=$1

for i in $file; do
        mv "$file" "/home/totallykvothe/Trash/$i"
done

exit 0

非常简单。我不知道为什么它不起作用。提前谢谢。

1 个答案:

答案 0 :(得分:0)

当您运行./yourscript *.txt时,*.txt不仅仅是放入$1的一个参数;相反,它是一个由shell扩展的glob(要清楚 - 不是shell 运行你的脚本,而是shell 启动你的脚本)到列表的参数。第一个是$1,第二个是$2,等等。

因此:

for i in "$@"; do
  mv -- "$i" "/home/totallykvothe/Trash/$i"
done