当前位置: 技术问答>linux和unix
bash 为什么一个子目录内最后一个文件会被判断两次
来源: 互联网 发布时间:2017-01-10
本文导语: 下面的代码是为了判断一个目录内的文件是目录或文件而写的,但是测试结果发现目录内的最后一个文件既是目录又是文件,怎么回事? 代码如下: #!/bin/bash # 修改指定目录的子目录或文件到默认权限 function chmo...
下面的代码是为了判断一个目录内的文件是目录或文件而写的,但是测试结果发现目录内的最后一个文件既是目录又是文件,怎么回事?
代码如下:
目录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
# 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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。