Linux之shell中的(),(()),{},=,==:{var}(cmd)((exp))=赋值==判断
生活随笔
收集整理的這篇文章主要介紹了
Linux之shell中的(),(()),{},=,==:{var}(cmd)((exp))=赋值==判断
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
${var}:{}里面是變量
但當(dāng)你要顯示變量值加隨意的字符(這_AA)時,就出錯,這時應(yīng)該用變量的原形:${var},即是加一個大括號來限定變量名稱的范圍
[root@bogon sh]# aa='ajax' [root@bogon sh]# echo $aa ajax [root@bogon sh]# echo $aa_AA[root@bogon sh]# echo ${aa}_AA ajax_AA$(cmd):里面是命令
[root@bogon t]# ls 1.txt 2.txt [root@bogon t]# echo $(ls) 1.txt 2.txt一串的命令執(zhí)行()和{}
()和{}都是對一串的命令進(jìn)行執(zhí)行,但有所區(qū)別: 相同點(diǎn): ()和{}都是把一串的命令放在括號里面,并且命令之間用;號隔開 不同點(diǎn) ()只對一串命令新開一個子shell進(jìn)行執(zhí)行,不影響當(dāng)前的變量{}對一串命令在當(dāng)前shell執(zhí)行會影響當(dāng)前變量 ()最后一個命令可以不用分號,{}最后一個命令要用分號 ()里的第一個命令和左邊括號不必有空格,{}的第一個命令和左括號之間必須要有一個空格 ()和{}中括號里面的某個命令的重定向只影響該命令,但括號外的重定向則影響到括號里的所有命令 [root@bogon t]# var=test [root@bogon t]# echo $var test [root@bogon t]# (var=notest;echo $var) notest [root@bogon t]# echo $var test [root@bogon t]# { var=notest;echo $var;} notest [root@bogon t]# echo $var notest${var:-string} ?${var:=string}
若變量var為空或者未定義,則用在命令行中用string來回傳
后者發(fā)現(xiàn)$var為空時,把string賦值給了var,后者是一種賦值默認(rèn)值的常見做法
[root@bogon ~]# echo $a[root@bogon ~]# echo ${a:-bcc} bcc [root@bogon ~]# a=ajax [root@bogon ~]# echo ${a:-bcc} ajax[root@bogon ~]# unset a [root@bogon ~]# echo $a[root@bogon ~]# echo ${a:=bbc} bbc [root@bogon ~]# echo $a bbc${var:+string}
只有當(dāng)var不是空的時候才替換成string,若var為空時則不替換或者說是替換成變量var的值,即空值
[root@bogon ~]# a=ajax [root@bogon ~]# echo $a ajax [root@bogon ~]# echo ${a:+bbc} bbc [root@bogon ~]# echo $a ajax [root@bogon ~]# unset a [root@bogon ~]# echo $a[root@bogon ~]# echo ${a:+bbc}[root@bogon ~]#${var:?string}
若變量var不為空,則用變量var的值來替換${var:?string}
若變量var為空,則把string輸出到標(biāo)準(zhǔn)錯誤中,并從腳本中退出。
可利用此特性來檢查是否設(shè)置了變量的值
$((exp))
[root@bogon ~]# echo $(3+2) -bash: 3+2: 未找到命令[root@bogon ~]# echo $((3+2)) 5 [root@bogon ~]# echo $((3.5+2)) -bash: 3.5+2: 語法錯誤: 無效的算術(shù)運(yùn)算符 (錯誤符號是 ".5+2") [root@bogon ~]# echo $((3>2)) 1 [root@bogon ~]# echo $((3>2?'a':'b')) -bash: 3>2?'a':'b': 語法錯誤: 期待操作數(shù) (錯誤符號是 "'a':'b'") [root@bogon ~]# echo $((3>2?a:b)) 0 [root@bogon ~]# echo $((a=3+2)) 5 [root@bogon ~]# echo $((a++)) 5 [root@bogon ~]# echo $a 6==
==?可用于判斷變量是否相等,=?除了可用于判斷變量是否相等外,還可以表示賦值。 =?與?==?在?[?]?中表示判斷(字符串比較)時是等價的 在 (( )) 中 = 表示賦值, == 表示判斷(整數(shù)比較),它們不等價?
總結(jié)
以上是生活随笔為你收集整理的Linux之shell中的(),(()),{},=,==:{var}(cmd)((exp))=赋值==判断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swoole实现私聊群聊
- 下一篇: G1+1/4的丝锥用多大