解释一个shell 脚本程序

程序目的是删除文件(其大小大于某个值)#!/bin/shif[$#-lt1]#就是搞不明白我根本就没有声明变量哪来的变量啊thenecho"usage:$0limite"... 程序目的是删除文件(其大小大于某个值)

#!/bin/sh
if [ $# -lt 1 ] #就是搞不明白我根本就没有声明变量 哪来的 变量啊
then echo "usage : $0 limite"; exit 1
fi
limite=$1 #这句话意思也不明白
set `ls -a` #不明白这条命令的目的
for fich in $*
do
if [ "$fich" == "." ] || [ "$fich" == ".." ]
then
continue
fi
if [ -d $fich ]
then
if [ -n "`ls $fich`" ]
then # le repertoire n est pas vide
#echo "dans le repertoire $fich"
cd $fich
pwd #知道pwd是求绝对路径 但是方这儿是干嘛呢
$0 $limite #不理解啥意思
cd ..
fi
else
if [ -f $fich ]
then
taille=`ls -l $fich | (read p l p g t r;echo $t)` #这句话看不懂
# les parentheses sont necessaires pour que t ait la valeur affectee
# autre solution passer par un fichier intermediaire :
# ls -l $fich >$0.tmp
# read <$0.tmp perm lien prop gr taille reste
# rm $0.tmp
if [ "$taille" -ge "$limite" ]
then
echo -n "Supprimer le fichier `pwd`/$fich de taille $taille (o/n)?"
read rep
case $rep in
o|O|y|Y) echo "le fichier $fich est detruit";;
*) echo " le fichier $fich est conserve";;
esac
fi
fi
fi
done
展开
 我来答
浦疏贤085
2013-10-31 · TA获得超过291个赞
知道答主
回答量:149
采纳率:100%
帮助的人:127万
展开全部
if [ $# -lt 1 ]              #就是搞不明白我根本就没有声明变量 哪来的 变量啊
   then echo "usage : $0 limite"; exit 1
fi

$#是bash内置变量,存放脚本的参数数量。

---------

limite=$1    #这句话意思也不明白

$0 $1 $2,分别代表脚本本身的文件名,第一个参数,第二个参数,以此类推

---------

set `ls -a`         #不明白这条命令的目的

通过set,将ls -a查到的内容赋值到$*中

---------

pwd                             #知道pwd是求绝对路径 但是方这儿是干嘛呢

在这里没看出有什么特殊作用

---------

$0 $limite                    #不理解啥意思

再次运行自己,就是简单地递归调用。

---------

taille=`ls -l $fich | (read p l p g t r;echo $t)`   #这句话看不懂

类似awk取各个域内容一样,将ls -l $fich的结果通过| read放入各个变量中。并显示大小那一列

---------


大概就这样。

追问
大神啊 还有一些其他问题请教 能否加一下q  q
鲁步友卉2k
2013-10-31 · TA获得超过149个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:73.2万
展开全部
$1 $2 $3 ...

他们是参数变量展开的写法。

如果脚本文件 foo.sh 中写:

#!/bin/sh
while echo '$#=['"$#"'] $0=['"$0"'] $1=['"$1"'] $2=['"$2"'] $3=['"$3]" &&
      test $# -gt 0
do shift; done

并运行之:

sh foo.sh A B C

你就可以看到其各自的替换关系。


================


执行 pwd 命令的目的在于显示一下在递归调用脚本处理哪个目录。


================


$0 $limite 是在该子目录中递归调用自己(当前脚本)。


================


$ ls -l input # 详细列出某文件的信息
-rw-r--r--  1 levi  staff  13  1 22  2013 input

$ | read p l p g t r # 读取上面 ls 的输出,存储到这6个变量中(有一个同名覆盖)
-rw-r--r--  1 levi  staff  13  1 22  2013 input
p^^^^^^^^^  l p^^^  g^^^^  t^  r

很容易注意到,read 执行后,t 变量存储着该文件的尺寸。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式