에이바*_*에이바 3 unix bash scripting syntax-error
编辑:这是我更新的代码:
#!/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
Run Code Online (Sandbox Code Playgroud)
我修复了所有间距问题,将#!bin/sh更改为#/ bin/bash,并在"$ f"中添加了引号.但是我仍然遇到很多错误.
ava @ kosh:〜/ test $./ delDir d1 rm:无法删除
d1': No such file or directory File: d1 was removed. rm: cannot removedelDir':没有这样的文件或目录文件:删除了delDir.rm:无法删除delDir2': No such file or directory File: delDir2 was removed. rm: cannot removee1':没有这样的文件或目录文件:e1已被删除.rm:无法删除e2': No such file or directory File: e2 was removed. rm: cannot removemake_d1':没有这样的文件或目录文件:make_d1已被删除.名称\ t\t链接\ t\tOwner\t\t日期查找:d1:找不到这样的文件或目录:delDir:没有这样的文件或目录查找:delDir2:没有这样的文件或目录查找:e1:没有这样的文件或目录查找:e2:找不到这样的文件或目录:make_d1:没有这样的文件或目录ne1 2
ava 2009年11月22日ne2
2 ava 2009年11月22日
有谁知道我做错了什么?
这是我的代码:Run Code Online (Sandbox Code Playgroud)#!/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这是我的问题:
如果我用不是普通文件的东西执行脚本并且不是我希望它说"Usage:Filename directory"的目录(参见第5行).我知道我可以使用2 if语句执行此操作,但是可以在bash中为此创建或声明吗?
当我运行脚本时,我不断收到这样的错误:
./delDir:39:[!:未找到./delDir:39:[!:未找到./delDir:39: [!:未找到./delDir:39: [!:未找到./delDir:39: [!:未找到./delDir:39:[!:未找到./delDir:39:[!:未找到./delDir:39:[!:未找到./delDir:39:[!:未找到./delDir:39:[!:not found名称
链接所有者日期查找:d1:没有这样的文件或目录查找:delDir:没有这样的文件或目录查找:delDir2:没有这样的文件或目录e1 1
ava 2009年11月22日e2
1 ava 2009年11月22日发现:make_d1:没有这样的文件或目录ne1 2
ava 2009年11月22日ne2
2 ava 2009年11月22日
我相信我收到这些错误是因为for循环首先查找用户输入的文件(它更改为的目录)并且找不到它.怎么能解决这个问题?3.您还可以看到更多错误吗?
Mik*_*l S 10
你忘了在线[前后放一个空格]说:
if [! -d $f]
Run Code Online (Sandbox Code Playgroud)
AND测试是使用-a,-o等于OR 创建的:
if [ ! -d $f -a -f $f ]
if [ ! -d $f -o -f $f ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12327 次 |
| 最近记录: |