Bash创建while循环以删除目录中的所有文件

时间:2015-04-18 04:41:59

标签: bash

尝试创建while循环以从指定的测试文件夹中删除8个文件。我一直收到错误no such file or directory即使我很肯定我在正确的文件夹中,因为我可以使用ls命令来查看文件......无论如何,这里是我所拥有的

#!/bin/bash

var=(`ls ~/Random/Unit1/Test`)
x=${#var[@]}
i=0

while [ $i -lt $x ] ; do
    rm $var                   # this line is incorrect and needs changing
    ((i++))
done

2 个答案:

答案 0 :(得分:1)

var是一个数组变量,现在你正在以标量的形式访问它,在bash中返回第一个值,所以你删除了第一个文件,然后尝试再次删除目录中的每个文件。如果你想删除每个索引所需的每个文件,那么在循环中你将获得数组中的第n个值,即

rm ${var[$i]}

答案 1 :(得分:0)

您的脚本存在一些问题,第一个问题是您应该cd到要删除文件的文件夹,您可以使用pushd和{{1} } 为了它。其次,您应该用{双引号括起popd变量。另外,如@redball's answer中所述,您正在访问数组,您必须在其上使用数组表示法。

var