本帖最後由 erobyii 於 2013-6-28 10:34 AM 編輯
教學03
- arg="$@"
- argu=(${argu// / })
- for (( i=0; i<${#argu[@]}; i=i+1 ))
- do
- if [ -f "${argu[$i]}" ]; then
- mv "${argu[$i]}" "${argu[$i]//tar.gz/tgz}"
- fi
- done
複製代碼
程式碼要用code才行,像這樣。比較整齊。。。
===================================
研究一下教學03。。。
教學03
arg="$@"
argu=(${argu// / }) #1 把傳入的參數做成數組
for (( i=0; i<${#argu[@]}; i=i+1 )) #2 for 中間的是 array 長度
do
if [ -f "${argu[$i]}" ]; then #3 若有檔案存在,就mv xxx xxx.tgt
mv "${argu[$i]}" "${argu[$i]//tar.gz/tgz}"
fi
done
1. argu=(${argu// / }) 是否有錯?
2. $@ 就是 positional parameter,會變成這種形式 $1 $2 $3
3. ${argu//xxx/yyy} 就是若 argu 有match xxx,便以yyy代之。// 就是 greedy match
4 ${#argu[@]} 就是數組長 ${#xxx},開頭有個#,都長度有關係。。
5 ${argu[$i]} 就是數組元素
P.S. 版主您好,我的密碼本不小心全刪了,不是多重分身,這樣可以嗎?
補充內容 (2013-6-28 10:38 AM):
linux 工具的學習也是好重要
補充內容 (2013-6-29 08:22 AM):
多謝大大... |