部分一致で検索する
grepを使って
if $(echo $TERM | grep xterm > /dev/null) ; then
echo OK
fi
Bashの正規表現マッチオペレーター(=~)を使って
TERM=xterm
if [[ "$TERM" =~ ^x ]]; then
echo OK
fi
=> OK
TERM=xterm
if [[ "$TERM" =~ ^x ]] && echo OK || echo NO
=> OK
TERM=xterm
OS=Linux
[[ "$TERM" =~ ^x && "$OS" = "Linux" ]] && echo OK
=> OK
- ifに続く条件式は複合コマンド[[ ]]を使う。testコマンド[]ではダメ。
- 正規表現は引用符で包まない。"^x"はダメ。^xとする。
ベンチマーク
# grep
real 0m4.484s
user 0m0.234s
sys 0m2.203s
# bash =~
real 0m2.823s
user 0m0.188s
sys 0m1.203s
パス名展開を使って
case "$TERM" in
*256color)
echo "DEBUG: 256color"
;;
xterm*)
echo "DEBUG: xterm*"
;;
?term)
echo "DEBUG: ?term"
;;
*)
echo "DEBUG: *"
;;
esac
- 環境変数$TERMがマッチするのは、上から、
- TERM=xterm-256color
- TERM=xterm もしくは xterm-16color
- TERM=kterm
- TERM=teraterm もしくは すべて
- など
参考