shell 裡 for ... in 與 運算 的應用
- example 1 : 批次殺程序
#!/bin/bash # 把全部apache且start的pid放到變數$str內,若apache的pid 為1011 1012 1013,則$str=1011 1012 1013 str=$(ps axw -eo pid,command |\ grep "apache" | grep "start" |\ awk '{print $1}') # 雖然kill 支援一次刪除多個檔,如kill -9 1011 1012 1013,但若想要砍一個就喊一下的話,就要用到for...in的應用 count=1 for i in $str do echo "string[$count]= $i" echo "kill -9 $i" # 注意shell裡的運算要用$((n+n)),而$(...)的用法與`...`相同 count=$(($count+1)) done
- example 2 : 批次改檔名
cd ~ for i in *.[tT][iI][fF]; do #若目錄內無 .tif 檔案 $i 會傳回 "*.[tT][iI][fF]" if [ "$i" != "*.[tT][iI][fF]" ]; then #取得副檔名 subname="`echo $i | awk -F '.' '{print $NF}'`" #取得主檔名 filename="`echo $i | sed -e s/\.${subname}$//`" #將 .tif 轉成 .pdf #tiff2pdf -o "${filename}.pdf" "$i" mv ${filename}.tif ${filename}.pdf #若執行成功則刪除 .tif 檔案 if [ $? -eq 0 ]; then rm -rf $i fi fi done
shell 裡 變數的關係
系統變數 env env - STR=aaa 程序內的全域變數 export export STR=aaa 程序內的區域變數 直接設定 STR=aaa
參考 認識與學習 BASH
Last modified 15 years ago
Last modified on Jul 7, 2009, 3:15:33 PM