Bashスクリプト入門
Alex Scriven
Data Scientist
複数・複雑な条件では、CASE 文は IF 文より効率的な場合があります。
次の条件と処理を想定します。
sydney があれば /sydney ディレクトリへ移動melbourne または brisbane があれば削除canberra があれば、元の filename を使い IMPORTANT_filename に改名複数の IF 文で次のようにも書けます:
grep を呼びます。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 には正規表現を使えます。例: 先頭が Air は Air*、hat を含むは *hat*。CASE 文の基本構造:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac 最後は 'esac' で閉じます
CASE 文の基本構造:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
以前の IF 文:
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
新しい CASE 文:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Bashスクリプト入門