bash +単語が値のリストにあるかどうかを確認する方法

bash +単語が値のリストにあるかどうかを確認する方法

パラメータのすべての値を識別する方法 -var_general存在するvar_get

例えば

var_general="sdb sdc sdd sde sdf sdg"
var_get="sdb sdc sdd sde sdf sdg sdh sdi"

この例では定常状態になります。

他の例

var_general="sdb sdj sdd sde sdf sdg"
var_get="sdb sdc sdd sde sdf sdg sdh sdi"

ステータスは失敗としてマークされます(sdjがvar_getにないため)。

ベストアンサー1

bash+comm+tr解決策:

var_general="sdb sdc sdd sde sdf sdg"
var_get="sdb sdc sdd sde sdf sdg sdh sdi"

if [[ $(comm -23 <(tr ' ' '\n' <<<"$var_general" | sort) <(tr ' ' '\n' <<<"$var_get" | sort)) ]]; then 
    echo "status: Fail"
else 
    echo "status: Ok"
fi

  • tr ' ' '\n' <<<"$var_general"- スペースを改行/改行に変換
  • comm -23 FILE1 FILE2- ファイルを比較し、一意の行を印刷しますFILE1。ファイルにFILE1一意のエントリが含まれていない場合は、ファイルのサブセットとして許可されます。FILE2

おすすめ記事