Shell字符串比较(等于、不等于、大于、小于、起始字符、结尾字符)
生活随笔
收集整理的這篇文章主要介紹了
Shell字符串比较(等于、不等于、大于、小于、起始字符、结尾字符)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#!/bin/sh#測試各種字符串比較操作。
#shell中對變量的值添加單引號,雙引號和不添加的區(qū)別:對類型來說是無關(guān)的,即不是添加了引號就變成了字符串類型,
#單引號不對相關(guān)量進行替換,如不對$符號解釋成變量引用,從而用對應(yīng)變量的值替代,雙引號則會進行替代
#author:tenfyguoA="$1"
B="$2"echo "輸入的原始值:A=$A,B=$B"# 判斷參數(shù)是否為空
if [ ! -n "$2" ]; thenecho "[-] Parameters of illegal !"helpexit 1
fi# 判斷與0是否相等
pid_cnts=$(ps -ef | grep mysqld | grep -v grep | awk '{print $2}' | wc -l)if [ $pid_cnts -eq 0 ];thenecho "process mysqld is exception,please check."
elseecho "mysqld count = $pid_cnts."
fi#判斷字符串是否相等
if [ "$A" = "$B" ];thenecho "[ = ]"
fi#判斷字符串是否相等,與上面的=等價
if [ "$A" == "$B" ];thenecho "[ == ]"
fi#注意: ==的功能在[[]]和[]中的行為是不同的,如下
#如果$a以”a”開頭(模式匹配)那么將為true
if [[ "$A" == a* ]];thenecho "[[ ==a* ]]"
fi#如果$a等于a*(字符匹配),那么結(jié)果為true
if [ "$A" == "a*" ];thenecho "==/"a*/""
fi#File globbing(通配) 和word splitting將會發(fā)生, 此時的a*會自動匹配到對應(yīng)的當(dāng)前以a開頭的文件
#如在當(dāng)前的目錄中有個文件:add_crontab.sh,則下面會輸出ok
#if [ "add_crontab.sh" == a* ];then
# echo "ok"
#fi
if [ "$A" == a* ];thenecho "[ ==a* ]"
fi#如果$a等于a*(字符匹配),那么結(jié)果為true
if [ "$A" == "a*" ];thenecho "==/"a*/""
fi#字符串不相等
if [ "$A" != "$B" ];thenecho "[ != ]"
fi#字符串不相等
if [[ "$A" != "$B" ]];thenecho "[[ != ]]"
fi#字符串不為空,長度不為0
if [ -n "$A" ];thenecho "[ -n ]"
fi#字符串為空.就是長度為0.
if [ -z "$A" ];thenecho "[ -z ]"
fi#需要轉(zhuǎn)義<,否則認為是一個重定向符號
if [ $A /< $B ];thenecho "[ < ]"
fiif [[ $A < $B ]];thenecho "[[ < ]]"
fi#需要轉(zhuǎn)義>,否則認為是一個重定向符號
if [ $A /> $B ];thenecho "[ > ]"
fiif [[ $A > $B ]];thenecho "[[ > ]]"
fi
總結(jié)
以上是生活随笔為你收集整理的Shell字符串比较(等于、不等于、大于、小于、起始字符、结尾字符)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从Spring Boot信息泄露到AWS
- 下一篇: ModuleNotFoundError: