shell 裡 for ... in 與 運算 的應用
#!/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
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