Bash Scripting"[!:not found"错误,以及如何编写或声明

에이바*_*에이바 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日

有谁知道我做错了什么?

这是我的代码:

#!/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
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  1. 如果我用不是普通文件的东西执行脚本并且不是我希望它说"Usage:Filename directory"的目录(参见第5行).我知道我可以使用2 if语句执行此操作,但是可以在bash中为此创建或声明吗?

  2. 当我运行脚本时,我不断收到这样的错误:

./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)


sin*_*boy 5

尝试在[和之间放一个空格!.