|
发表于 2005-8-18 11:36:31
|
显示全部楼层
Post by handsome1024
我是个SHELL新手,写得漏洞和想法很多,希望大家指正。
这段代码是昨天写得,想实现的功能是把name_list.txt里面的内容-----按行排列的文件名。
一次读取一行,也就是说一次读取一个文件名,然后进行压缩。我想了两种方式。我都写出来,请大家指正。
一,这个是用READ命令来实现的。我说了我是刚学SHELL,公司刚来项目,之前谁都没用过SHELL,把我赶上架了。
#---------------------------------------
# ファイルを解凍
#---------------------------------------
while read list
do
unzip "$list" > vms/aaa
if [ $? -ne 0 ];then
Func_Syslog "ERR" "ADM-61003" "$list解凍処理が?常終了しました。" #LOG输出。
exit 1
fi
done < name_list.txt
二,这段的思想是定义一个函数,然后再主函数中,用传参数的形式,把name_list.txt的内容传给这个函数。
#---------------------------------------
# [関数]ファイルを解凍
#---------------------------------------
while [ $# -eq 0 ]
do
list=$1
unzip "$list" > vms/aaa
shift
if [ $? -ne 0 ];then
Func_Syslog "ERR" "ADM-61003" "$list解凍処理が?常終了しました。" #LOG输出。
exit 1
fi
done
我还有个问题困扰,比如我现在写得这个脚本名字叫vmc_artist_unzip.sh,在另一个SH脚本里我要调用他,到底如何调用,请大家帮忙。
第一个方法是没有问题的,第二个看着有点别扭。既然$# -eq 0了,怎么又list=$1? 还有运行了shift再检测$?是不是不合逻辑阿。调用简单,直接/path/to/script就行了。 |
|