1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

配列に文字列が存在するかどうかを判定するシェルサンプル実装

2022-02-08 06:44:54

構文形式です。 [[ "${array[@]}" =~ "string" ]]


#! /bin/sh
##Array
array=(
address
base
cart
company
store
)

 
# $1 if exists, output $1 exists, $1 if not, output $1 not exists
if [ "$1" ! = null ];then
 if [[ "${array[@]}" =~ "${1}" ]]; then
 echo "$1 exists"
 elif [[ ! "${array[@]}" =~ "${1}" ]]; then
 echo "$1 not exists"
 fi
else
 echo "Please pass an argument"
fi

エクステンションです。

こうすることで、ある文字列が配列に存在するかどうかだけでなく、テキストに存在するかどうかも判断することができます。

## Determine if a string exists in the text
#! /bin/sh

names="This is a computer , I am playing games in the computer"
if [[ "${names[@]}" =~ "playing" ]]; then
 echo 'String exists'
fi


シェルは文字列を配列に分離する

#! /bin/bash
a="hello,world,nice,to,meet,you"
# To split $a, store the old separator first
OLD_IFS="$IFS"

#set the separator
IFS="," 

#The following will automatically separate
arr=($a)

#Restore the original separator
IFS="$OLD_IFS"

#Iterate through the array
for s in ${arr[@]}
do
echo "$s"
done

変数 $IFS にはセパレータが格納されており、ここではカンマ "," に設定しています。OLD_IFS は、デフォルトのセパレータをバックアップし、使用後にデフォルトに戻すために使用されます。
arr=($a) は、文字列 $a を IFS のセパレータで配列 $arr に分割するために使用します。
${arr[0]} ${arr[1]} ・・・。分割された配列1 2 ...をそれぞれ格納する。 項目
配列全体を格納する${arr[@]}。
${!arr[@]} にはインデックス値全体が格納されます: 1 2 3 4 ...
${#arr[@]} 配列の長さを取得します。

配列に文字列が存在するかどうかを判断するシェルの記事はこれで全てです。配列に文字列が存在するかどうかを判断するシェルについての詳しい情報は、過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。