1. ホーム
  2. regex

[解決済み】bashスクリプトで正規表現を使用してテストを否定するにはどうすればよいですか?

2022-04-05 20:22:55

質問

GNU bash (version 4.0.35(1)-release (x86_64-suse-linux-gnu)) を使って、正規表現でテストを否定したいのですが、どうすればいいですか?例えば、PATH変数にパスがない場合、条件付きでパスを追加したいのですが、以下のような感じです。

TEMP=/mnt/silo/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
export PATH

やり方はいくらでもあると思うのですが、私が知りたいのは、(the erroneous)のように、条件式を何らかの方法で否定することができるかどうかです。

TEMP=/mnt/silo/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
export PATH

解決方法は?

の間にスペースを入れるだけです。 ![[ のように if ! [[