|
藍森林 http://www.lslnet.com 2006年6月26日 11:18
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
我是個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
真誠希望大家和我交流,QQ81857404
MSNhandsomeice1024@hotmail.com |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
這個帖子大家能清楚完整地看到麼?謝謝。 |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
能不能註釋一下你的腳本
unzip ....? |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
unzip 不是解壓縮命令麼? |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
unzip "$list" > vms/aaa 是要記錄unzip了哪個文件麼?
每次循環不會覆蓋aaa麼?
$# -eq 0 時會有$1麼? |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
while [ $# -eq 0 ] #執行循環。
do
list=$1 #變量list取參數(也就是name_list.txt裡面的內容,文件名)
unzip "$list" >> vms/aaa #解壓縮到vms/aaa
if [ $? -ne 0 ];then #判斷返回值
Func_Syslog "ERR" "ADM-61003" "$list解凍失敗。" #LOG輸出。
exit 1
shift #指向下一個參數
fi
done
這是我的意圖。那個shift寫錯了原來。
謝謝大家的回帖,有人告訴我說是因為我代碼裡面有日文大家抵制,真的很冤枉哈。我在大連,大連我不知道大家是否知道哈,全是對日的。所以。。。請大家不要因為這個排擠我。謝謝。 |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
這個程序最大的問題就是,你怎麼保證你那個txt的文件裡的內容傳到參數的時候,能把裡面的文件名一條一條的分別傳給$1,$2,$3,。。。。 |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
-->
個人認為沒什麼大問題
1 unzip "$list" >> vms/aaa
2 但是覺得不應該有exit 1 出錯就一定要exit嗎 |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
> vms/aaa
個人認為這個沒什麼意義吧? 不顯示unzip的信息?
另,大連是殖民地?:mrgreen: |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
>> vms/aaa 應該是這個。是解壓縮後的文件放到這個文件夾。另外請教下,顯示unzip的信息,是什麼意思?是什麼效果?
出錯後,業務書要求是直接終了。
解放前大連確實是日本的殖民地。現在大連80%的軟件是對日的。 |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
-->
change to :
cd vms/aaa
unzip $list |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
我原來的寫法,不對麼?不是輸出定向的麼? |
請教大家個問題。大家不要因為我寫日文代碼就排擠我啊55555
是不是用unzip $list -d /dir 呢? |
| |