1. ホーム
  2. linux

[解決済み] Bashでリスト内に変数が存在するかどうかを確認する

2022-04-21 14:39:34

質問

ユーザー入力の妥当性をチェックするスクリプトをbashで書こうとしています。

私は入力(例えば変数 x ) を有効な値のリストに変換します。

今現在、私が思いついたのは

for item in $list
do
    if [ "$x" == "$item" ]; then
        echo "In the list"
        exit
    fi
done

質問ですが、もっと簡単な方法はないでしょうか?

のようなものです。 list.contains(x) は、ほとんどのプログラミング言語で使用されています。

セイリストは。

list="11 22 33"

私のコードは、これらの値に対してのみメッセージを表示します。 list は文字列ではなく、配列として扱われます。 すべての文字列操作で 1 私は失敗して欲しいのですが。

どのように解決するのですか?

[[ $list =~ (^|[[:space:]])$x($|[[:space:]]) ]] && echo 'yes' || echo 'no'

または関数を作成します。

contains() {
    [[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] && exit(0) || exit(1)
}

を使用します。

contains aList anItem
echo $? # 0: match, 1: failed