我想删除当前目录下文件所有者为指定用户的文件,我使用set命令,因为set命令可以让外部命令的执行结果用位置参数访问。脚本如下:
#!/bin/bash
echo -n "please input username:"
read username
for file in *
do
if [ -f $file ];then
set $(ls -l $file)
#文件的详细信息的第三个字段为文件所有者,第九个字段为文件名。
owner=$3
filename=$9
if [ $owner=$username ];then
rm -f $filename
fi
fi
done
exit 0
set --设置位置参数是一种有保证的方法,即使位置参数中有以-开头也不会当成选项来处理;不用--的话,假如set后的内容碰巧以-开头的话,就会被当成开关选项,执行时出现你看到的一些奇怪的错误信息,而如果幸运地没有-开头的内容,就会完成正确的设置。
ls -l结果中很容易会以-开头,所以如果不加--来设置的话,很多情况下会出错,而偶尔也会正确,取决于ls -l的输出内容。