编辑:这是我更新的代码:
#!/bin/sh
files=`ls`
if [ $# -ne 1 -o -f $1 ]
then
echo "Usage: $0 <directory>"
exit 1
fi
if [ ! -e $1 ]
then
echo "$1 not found"
exit 1
elif [ -d $1 ]
then
cd $1
for f in $files
do
if [ ! -d "$f" ]
then
if [ ! -s "$f" ]
then
rm -r "$f"
echo "File: $f was removed."
else
continue
fi
fi
done
echo "Name\t\tLinks\t\tOwner\t\tDate"
for f in $files
do
find "$f" -type f -printf "%f\t\t %n\t\t %u\t %TH %Tb %TY\n"
done
exit 0
fi
我修复了所有间距问题,将 #!bin/sh 更改为 #/bin/bash,并在 "$f" 中添加了引号。但是我仍然遇到很多错误。
ava@kosh:~/test$ ./delDir d1 rm: 无法删除
d1': No such file or directory File: d1 was removed. rm: cannot remove
delDir': 没有这样的文件或目录 File: delDir 已被删除。rm:无法删除delDir2': No such file or directory File: delDir2 was removed. rm: cannot remove
e1':没有这样的文件或目录文件:e1 已删除。rm:无法删除e2': No such file or directory File: e2 was removed. rm: cannot remove
make_d1':没有这样的文件或目录文件:make_d1 已被删除。Name\t\tLinks\t\tOwner\t\tDate find: d1: No such file or directory find: delDir: No such file or directory find: delDir2: No such file or directory find: e1: No such file or directory find : e2: 没有这样的文件或目录找到: make_d1: 没有这样的文件或目录 ne1 2
ava 2009 年 11 月 22 日 ne2
2 ava 2009 年 11 月 22 日
有谁知道我做错了什么?
这是我的代码:#!/bin/sh files=`ls` if [ $# -ne 1 ] then echo "Usage: $0 <directory>" exit 1 fi if [ ! -e $1 ] then echo "$1 not found" exit 1 elif [ -d $1 ] then cd $1 for f in $files do if [! -d $f] then if [ ! -s $f ] then rm-r $f echo "File: $f was removed." else continue fi fi done echo "Name\t\tLinks\t\tOwner\t\tDate" for f in $files do find $f -type f -printf "%f\t\t %n\t\t %u\t %TH %Tb %TY\n" done exit 0 fi
以下是我的问题:
如果我使用不是普通文件且不是目录的东西执行脚本,我希望它说“用法:文件名目录”(见第 5 行)。我知道我可以使用 2 个 if 语句来做到这一点,但是是否可以在 bash 中为此创建一个 or 语句?
当我运行脚本时,我不断收到如下错误:
./delDir: 39: [!: not found ./delDir: 39: [!: not found ./delDir: 39: [!: not found ./delDir: 39: [!: not found ./delDir: 39: [!: 未找到 ./delDir: 39: [!: 未找到 ./delDir: 39: [!: 未找到 ./delDir: 39: [!: 未找到 ./delDir: 39: [!: 未找到。 /delDir: 39: [!: not found Name
Links Owner Date find: d1: No such file or directory find: delDir: No such file or directory find: delDir2: No such file or directory e1 1
ava 22 Nov 2009 e2
1 ava 2009 年 11 月 22 日找到:make_d1:没有这样的文件或目录 ne1 2
ava 2009 年 11 月 22 日 ne2
2 ava 2009 年 11 月 22 日
我相信我收到了这些错误,因为 for 循环首先查找用户键入的文件(它更改为的目录)并且找不到它。如果解决这个问题怎么办?3. 你还能看到更多错误吗?