当前位置:  技术问答>linux和unix

bash 为什么一个子目录内最后一个文件会被判断两次

    来源: 互联网  发布时间:2017-01-10

    本文导语:  下面的代码是为了判断一个目录内的文件是目录或文件而写的,但是测试结果发现目录内的最后一个文件既是目录又是文件,怎么回事? 代码如下: #!/bin/bash # 修改指定目录的子目录或文件到默认权限  function chmo...

下面的代码是为了判断一个目录内的文件是目录或文件而写的,但是测试结果发现目录内的最后一个文件既是目录又是文件,怎么回事?
代码如下:

#!/bin/bash

# 修改指定目录的子目录或文件到默认权限 
function chmodDefault()
{
for i in $1/*
do
# echo "Hello: $i"
if [ -f "$i" ]; then
echo "File:" "$i"
elif [ -d "$i" ]; then
chmodDefault "$i"
echo "Dir: " "$i"
else
echo "Else:" "$i"
fi
done
}

dir=/home/zcm/bin
chmodDefault $dir


目录dir的情况是这样的:
[zcm@bin #26]$pwd
/home/zcm/bin
[zcm@bin #27]$tree ./
./
|-- a.sh
`-- log
    |-- check
    |   |-- 20111020.log
    |   `-- 20111021.log
    |-- collect
    |   |-- 20111018.log
    |   |-- 20111019.log
    |   `-- 20111020.log
    |-- load
    |   `-- 20111020.log
    `-- what.txt

4 directories, 8 files
[zcm@bin #28]$

为什么会出现我描述的问题呢,望高人指点!

|
#!/bin/bash

function chmodDefault()
{
    for i in $1/*
    do
                if [ -d "$i" ];then
                        echo ":$i"
                        chmodDefault $i
                elif [ -f "$i" ];then
                        echo "File:$i"
                else
                        echo "Other:$i"
                fi
    done
}

dir=$1
chmodDefault $dir


ls *也没见到.啥的啊,郁闷了。

我自己写了一下就没问题了,你到底干啥了啊。
#!/bin/bash

function chmodDefault
{
    for i in $1/*
    do
                if [ -f "$i" ];then
                        echo "FILE:$i"
                elif [ -d "$i" ];then
                        echo "Dir:$i"
                        chmodDefault $i
                else
                        echo "Other:$i"
                fi
    done
}

dir=$1
chmodDefault $dir


我发现如果一个目录是空目录,那进去竟然会打印一个xxx/yyy/* ,悲哀。

|
我来了

|


可能是因为你还没有学会

|
容我 试试 ...

待会告诉你结果 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求一个bash脚本判断网络通断的思路
  • 支持Bash的OnlineJudge,在线判断程序对错。
  • bash shell 中 如何判断有线网卡已经连接上了
  • BASH中如何判断程序是否执行完毕
  • linux bash shell命令:grep文本搜索工具简介
  • . ./.bash_file 与 ./.bash_file的区别?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 为什么每次启动bash都出现bash:test:a:binary operaotr expected
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • linux RHEL 5.6 在root用户下. .bash_profile 或source .bash_profile 报错
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • Ubuntu中如何配置shell(bash)的环境
  • 如何在ubunt下面安装两个bash
  • bash 不能使用括号,求助
  • 如何在redhat下安装bash?
  • bash和Korn shell学哪个比较好
  • 请问root的bash的环境变量放在哪个文件中啊?
  • linux(redhat9)中在哪里设环境变量,.bash_profil在哪里啊?
  • BASH Debugger
  • .bashrc和.bash_profile有什么区别
  • . /root/.bash_profile
  • Bash架构问题
  • bash的控制终端
  • bash 与shell 什么关系?
  • -bash-3.2# Argument list too long 到底是怎么回事呀?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3