GNU/Linux >> Znalost Linux >  >> Linux

Otestujte, zda řetězec nemá v Bash znaky bez mezer

Můžete použít syntaxi regulárního výrazu bash.

Vyžaduje použití dvojitých hranatých závorek [[ ... ]] , (obecně všestrannější).
Proměnnou není nutné uvádět. Samotný regulární výraz nesmí být citován

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

Výstup

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

Mnohé z těchto odpovědí jsou mnohem složitější nebo mnohem méně čitelné, než by měly být.

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

Linux
  1. Jak zkontrolovat, zda má Bash zranitelnost Shellshock?

  2. Jak rozdělit řetězec ve skriptu Bash

  3. Převeďte textový řetězec v bash na pole

  1. Co dělá 'bash -c'?

  2. Odstraňte všechny speciální znaky a velká a malá písmena z řetězce v bash

  3. pomocí náhodného vygenerování náhodného řetězce v bash

  1. Shell Test najít vzor v řetězci?

  2. Jak mohu zkontrolovat doslovné znaky řetězce příkazu bash?

  3. grep najít soubory, které obsahují řetězec delší než x znaků?