GNU/Linux >> Linux の 問題 >  >> Linux

Bash で文字列に空白以外の文字が含まれているかどうかをテストする

bash の正規表現構文を使用できます。

二重角括弧 [[ ... ]] を使用する必要があります 、(一般的に、より用途が広い)。
変数を引用符で囲む必要はありません。正規表現自体はしてはいけません 引用される

for str in "         "  "abc      " "" ;do
    if [[ $str =~ ^\ +$ ]] ;then 
      echo -e "Has length, and contain only whitespace  \"$str\"" 
    else 
      echo -e "Is either null or contain non-whitespace \"$str\" "
    fi
done

出力

Has length, and contain only whitespace  "         "
Is either null or contain non-whitespace "abc      " 
Is either null or contain non-whitespace "" 

これらの回答の多くは、本来よりもはるかに複雑であるか、はるかに読みにくいものです。

[[ $string = *[[:space:]]* ]]  && echo "String contains whitespace"
[[ $string = *[![:space:]]* ]] && echo "String contains non-whitespace"

Linux
  1. 文字列内のパターンを見つけるためのシェルテスト?

  2. 文字列の最後の3文字だけを印刷するコマンド?

  3. 文字列にBashの部分文字列が含まれているかどうかを確認する方法

  1. Bashにシェルショックの脆弱性があるかどうかを確認する方法は?

  2. 文字列定数の前に予想される識別子

  3. ランダムを使用してbashでランダムな文字列を生成する

  1. Bashスクリプトで文字列を分割する方法

  2. bashで文字列を(解凍/解凍)圧縮しますか?

  3. bash のテキスト文字列を配列に変換する