下面这个脚本好像不能实现辨别链接目录获文件,因为我在 /home/xxx下创建了2个链接文件
lrwxrwxrwx. 1 xxx xxx 1 May 14 18:08 b -> a
-rwxrw-r--. 1 xxx xxx 445 May 14 17:46 broken-link.sh
-rwxrw-r--. 3 xxx xxx 378 May 14 15:42 ceshi
lrwxrwxrwx. 1 xxx xxx 9 May 14 18:14 ceshi1 -> test_test
---------------------------------------------------------------------------------
[xxx@localhost ~]$ ./broken-link.sh /home/xxx
hello
over
---------------------------------------------------------------------------------脚本如下
#!/bin/bash
[ $# -eq 0 ] && directorys=$@
linkchk () {
for element in $1/*; do
[ -h "$element" -a ! -e "$element" ] && echo \"$element\"---- -a ! -e 这几个参数是什么用法,不明白
[ -d "$element" ] && linkchk $element
done
}
########################
echo "hello"
for directory in $directorys;do
if [ -d $directory ]
then linkchk $directory
else
echo "$directory is not a directory"
echo "Usage: $0 dir1 dir2 ..."
fi
done
echo "over"
exit 0
下面是判断目录是否为链接目录的脚本,有几点不明白
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
- astolia
- 论坛版主
- 帖子: 6703
- 注册时间: 2008-09-18 13:11
Re: 下面是判断目录是否为链接目录的脚本,有几点不明白
第一行代码就错了。把[ $# -eq 0 ] &&删掉
-a ! -e这几个去看man
-a ! -e这几个去看man
代码: 全选
man [
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: 下面是判断目录是否为链接目录的脚本,有几点不明白
单个 -a是指 存在,-e好像也是的,好像被废弃了,他们又与!结合,而且又没和-h放在一起,很费解astolia 写了:第一行代码就错了。把[ $# -eq 0 ] &&删掉
-a ! -e这几个去看man代码: 全选
man [
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: 下面是判断目录是否为链接目录的脚本,有几点不明白
重新测试了 几遍 -a ! -e $element a应该是全部显示 不管 $elemen 存在与否,-e 表示$element必须是存在的文件,!就是逻辑取反,不知到 是不是这样糊涂的小强 写了:单个 -a是指 存在,-e好像也是的,好像被废弃了,他们又与!结合,而且又没和-h放在一起,很费解astolia 写了:第一行代码就错了。把[ $# -eq 0 ] &&删掉
-a ! -e这几个去看man代码: 全选
man [
- astolia
- 论坛版主
- 帖子: 6703
- 注册时间: 2008-09-18 13:11
Re: 下面是判断目录是否为链接目录的脚本,有几点不明白
我们看的man不是同一个?
就是必须满足-h "$element"但同时不能满足-e "$element"
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true
! EXPRESSION
EXPRESSION is false
-e FILE
FILE exists
[ -h "$element" -a ! -e "$element" ]-h FILE
FILE exists and is a symbolic link (same as -L)
就是必须满足-h "$element"但同时不能满足-e "$element"
也就是"$element"是一个符号链接,但其链接的对象不存在Except for -h and -L, all FILE-related tests dereference symbolic links.
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: 下面是判断目录是否为链接目录的脚本,有几点不明白
我没有看man,是通过测试猜测的,没太留意你给的提示man [ ,不过你不说,还真不知道可以 man [,潜意识没把他当成命令,另外我的centos 只能man test,man [ 提示 no normal entry for [,不过这已经不重要了, [ 就是 test的意思。astolia 写了:我们看的man不是同一个?
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true! EXPRESSION
EXPRESSION is false-e FILE
FILE exists[ -h "$element" -a ! -e "$element" ]-h FILE
FILE exists and is a symbolic link (same as -L)
就是必须满足-h "$element"但同时不能满足-e "$element"
也就是"$element"是一个符号链接,但其链接的对象不存在Except for -h and -L, all FILE-related tests dereference symbolic links.
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: 下面是判断目录是否为链接目录的脚本,有几点不明白
不太明白哦eexpress 写了:-d 配合 readlink