CU的shell版的一个帖子,看你会回答多少哦, 尤其还是为什么eval要那么用? 可以不用么
哪位有耐心的好心人可以帮我解释一下这个程序。
刚开始学习Shell,不太懂。
#!/bin/sh
if test $# -lt 2
then
echo "usage: `basename $0` [...]" \
" [<--> [...]]" 1>&2 # 1>&2是什么意思?在这里什么作用?
exit 1 # exit在这里什么作用?
fi
str="$1" && shift # shift具体作用?
i=0
while test "x$1" != "x"
do
test "x$1" == "x--" && { shift; break; }
test -d "$1" || {
echo "`basename $0`: $1: no such directory" 1>&2
exit 1
}
d=dir${i} #这句还有下面一句看不懂
eval $d=\"\$1\" && shift
i=`expr $i + 1`
done
j=0
while test $j -lt $i #这个while循环的目的是什么?
do
d=`eval echo \$\{dir$j\}` # 完全看不懂了。。。
case $d in
-*) d="./$d";; # 怎么跟火星文似的。。。
esac
find "$d" -type f -print0 | xargs -0 grep "$@" -- "$str" # -type,-print0,-0,"$@" -- "$str" 不太明白。。。
j=`expr $j + 1`
done
exit 0
谁能帮我透彻的解释一下啊? 这是老师上课举得一个例子,还没学多少,就拿这么个例子来讲,讲的我一头雾水。。
先谢过了!!!
阅读(997) | 评论(0) | 转发(0) |