bash编程之“字符串”:

双目:

>:大于

<:小于

==:等于

<>或者!=:不等

=~:左侧是字符串,右侧是一个模式,判断左侧的字符串能否被右侧的模式所匹配,通常只在[[]]中使用,

    模式中可以使用行首、行尾锚定符,但模式不要加引号。

单目:

-n $stringVar :字符串是否不空,不空为真,空为假

-z $stringVar :字符串是否空,空为真,不空为假


例如:stringA="hello"

      stringB="world"

[ "stringA"=="stringB" ]

       echo $?,结果为1,假



      stringB="hello"

[ "stringA"=="stringB" ]

       echo $?,结果为0,真



[ -z "$stringA" ]

echo $?,结果为1,假

unset stringA

[ -z "$stringA" ]

 echo $?,结果为0,真


[[ "$stringA"=~ lo ]]

echo $?,结果为0,真


[[ "$stringA"=~ ol ]]

echo $?,结果为1,假


例如:判断系统所有用户是否是拥有可登录shell

#!/bin/bash

for userName in `cut -d: -f1 /etc/passwd`; do

if [[ `grep "^$userName\>" /etc/passwd|cut -d :-f7` =~ sh$]];then

 echo "login user:$userName"

else

 echo "nologin user:$userName"

fi

done