Bash Script Yazmaya Giriş
Alex Scriven
Data Scientist
Birden çok veya karmaşık koşul varsa, CASE ifadeleri IF ifadelerinden daha verimli olabilir.
Diyelim ki aşağıdaki koşulları ve işlemleri test etmek istiyorsunuz:
sydney içeriyorsa /sydney dizinine taşıyınmelbourne veya brisbane içeriyorsa silincanberra içeriyorsa, özgün dosya adı filename ise adını IMPORTANT_filename olarak değiştirinBirden fazla IF ifadesi şöyle yazılabilir:
grep çalıştırır.if grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
PATTERN için regex kullanabilirsiniz. Örn. başı 'Air' ile başlayanlar için Air* veya 'hat' içerenler için *hat*.Temel CASE söz dizimi:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac Son sözcük 'esac'
Temel CASE söz dizimi:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
Eski IF ifademiz:
if grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
Yeni CASE ifademiz:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Bash Script Yazmaya Giriş