检查列表中是否存在元素bash

时间:2015-07-17 00:13:19

标签: bash shell

  : ${models:=foo bar foobar baz}
  : ${special_list:=station_tracks user_features}

   for model in $models;

  do
      echo $model
    if # model in special list; then # how do i test this?
       # do something 
        continue

    fi
done

那么,基本上我如何测试变量模型是否在special_list中?

1 个答案:

答案 0 :(得分:0)

Perl拥有SmartMatch operator ~~。和been noted一样,Bash还没有 甚至Awk都有一个等价物,但你可以使用grep作为解决方法。也 在继续之前,如果要使用Bash数组,请使用Bash数组。您的 一旦超出最简单的例子,语法就会被打破。 喜欢空间,参与其中:

models=(foo bar foobar baz)
special_list=(station_tracks user_features)
for model in "${models[@]}"
do
  echo "$model"
  if printf '%s\0' "${special_list[@]}" | grep -Fqxz "$model"
  then
    continue
  fi
done

如果您愿意,可以使用等效的长选项:

--fixed-strings --quiet --line-regexp --null-data