私のUbuntuコンピュータのスクリプトで次の文字列を宣言します。
DEBUG_PACKAGE_LIST=$(apt-cache search dbg | awk '{ print $1 }' | grep -e "-dbg")
私の質問を理解するのに役立ちますここの出力は次のとおりです。
echo $DEBUG_PACKAGE_LIST >> debug
次のような
if [[ ! $DEBUG_PACKAGE_LIST =~ "[^-a-z0-9]libmagick++5-dbg[a-z]*" ]]; then
echo "no contained";
fi
$DEBUG_PACKAGE_LIST
echoは、「libmagick ++ 5-dbgsym」文字列が含まれていても「含まない」を示します。理由を理解するのに役立ちますか?
デフォルトでは、私の目標はlibmagick ++ 5-dbgを一致させることであり、libmagickの前に空白文字が1つしかないことです。
ベストアンサー1
バージョンbash
3.2以降:
shopt -u compat31
[[ ! $DEBUG_PACKAGE_LIST =~ [^-[:alnum:]]'libmagick++5-dbg' ]];
bash
3.1から:
[[ ! $DEBUG_PACKAGE_LIST =~ '[^-[:alnum:]]libmagick\+\+5-dbg' ]];
(これは[a-z]*
空の文字列とも一致するため、重複するため常に一致します。)
次の2つの状況に適用できます。
re='[^-[:alnum:]]libmagick\+\+5-dbg'
[[ ! $DEBUG_PACKAGE_LIST =~ $re ]]