shell 變量非空值,空值和不存在的辨別

這里以ubuntu14 bash 為例倍谜,以實(shí)測為主尔崔,屏蔽掉網(wǎng)絡(luò)上一些含糊不清的說法

------------------------------------------------------------

1. 不要直接用 -n 來判斷一個(gè)變量是否為空季春,因?yàn)樗袛嗖粚?/p>

------------------------------------------------------------

實(shí)驗(yàn):

$ a=""

$ [ -z $a ] && echo Null || echo NotNull

Null

$ [ -n $a ] && echo NotNull || echo Null

NotNull

-n 與 -z 頂牛了,-z說為空耘拇,-n說不為空惫叛,顯然-n 說的是不對的,

所以我們以后不要用-n 判斷字符串是否為空了!!!

那這個(gè) -n 還有什么用仑最? 是bug 嗎词身?

我也不知道 -n 還有什么用了损敷, 看起來是個(gè)bug! 你說呢拗馒?

------------------------------------------------------------

2. -z 也有點(diǎn)近視眼,它分不清到底是空還是變量根本不存在.

------------------------------------------------------------

我們首先用 declare -p 命令確認(rèn)b 變量是不存在的呈昔,然后繼續(xù)以下實(shí)驗(yàn)

實(shí)驗(yàn):

$ [ -z $b ] && echo Null || echo NotNull

Null

當(dāng)然把不存在的變量當(dāng)成Null 也未嘗不可,也不是什么大事郭宝,不算bug,

因?yàn)樗挥袃蓚€(gè)值,真或假衔统,總不能當(dāng)成非Null吧.!

------------------------------------------------------------

3. 如果你確實(shí)要知道該變量是空還是不存在缰冤,該怎么辦呢?

------------------------------------------------------------

雖然這種要求一般是不需要甄別的迷郑,所以網(wǎng)上就有很多含混的說法嗡害,基本上不區(qū)分兩種情況.

一定要區(qū)分時(shí),可以參考如下實(shí)例使用

hjj@hjj-Inspiron:~$ echo ${a-NotDefine}

hjj@hjj-Inspiron:~$ echo ${b-NotDefine}

NotDefine

看到了嗎? a是有定義的叹螟,它回傳的是空,你只看到了一個(gè)空行

b 是無定義的它回傳了"NotDefine"字符串。

借助于第三個(gè)變量例如c,判斷其是否等于"NotDefine"就知道變量是否定義過明垢。

這樣把$a,$b的真實(shí)面目就區(qū)分開了痊银!

這里的關(guān)鍵是利用了${var-default}格式區(qū)分了變量定義和未定義.

補(bǔ)充: 用=或 == 判斷兩個(gè)字符串相等的方式也不能判斷是不存在還是為空值

a是存在的為空,b是不存在的鬓照。

$[ "$a" == "" ] && echo YES || echo NO

YES

$[ "$b" == "" ] && echo YES || echo NO

YES

分不清也有分不清的好處,這樣容錯(cuò)性倒是加強(qiáng)了躺酒,因?yàn)榇蠖鄶?shù)不用管到底是不存在空還是存在空.

---------------------

作者:hejinjing_tom_com

來源:CSDN

原文:https://blog.csdn.net/hejinjing_tom_com/article/details/82047778

版權(quán)聲明:本文為博主原創(chuàng)文章次屠,轉(zhuǎn)載請附上博文鏈接裸违!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市本昏,隨后出現(xiàn)的幾起案子供汛,更是在濱河造成了極大的恐慌,老刑警劉巖涌穆,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怔昨,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒲犬,警方通過查閱死者的電腦和手機(jī)朱监,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門岸啡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來原叮,“玉大人,你說我怎么就攤上這事》芰ィ” “怎么了擂送?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長唯欣。 經(jīng)常有香客問我嘹吨,道長,這世上最難降的妖魔是什么境氢? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任蟀拷,我火速辦了婚禮,結(jié)果婚禮上萍聊,老公的妹妹穿的比我還像新娘问芬。我一直安慰自己,他們只是感情好寿桨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布此衅。 她就那樣靜靜地躺著,像睡著了一般亭螟。 火紅的嫁衣襯著肌膚如雪挡鞍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天预烙,我揣著相機(jī)與錄音墨微,去河邊找鬼。 笑死扁掸,一個(gè)胖子當(dāng)著我的面吹牛欢嘿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播也糊,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼炼蹦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狸剃?” 一聲冷哼從身側(cè)響起掐隐,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钞馁,沒想到半個(gè)月后虑省,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡僧凰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年探颈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训措。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伪节,死狀恐怖光羞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怀大,我是刑警寧澤纱兑,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站化借,受9級特大地震影響潜慎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蓖康,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一铐炫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒜焊,春花似錦驳遵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鸭丛,卻和暖如春竞穷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鳞溉。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工瘾带, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熟菲。 一個(gè)月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓看政,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抄罕。 傳聞我的和親對象是個(gè)殘疾皇子允蚣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 個(gè)人學(xué)習(xí)批處理的初衷來源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求呆贿,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,702評論 0 11
  • 一嚷兔、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 5,723評論 0 10
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 6,365評論 0 17
  • 上篇說到碧山書局和豬欄酒吧做入,將書香與民宿安放在了碧山冒晰,接著來說另一個(gè)文化引入的重頭戲 - 工銷社。 我父親曾在北京...
    Teresae2016閱讀 527評論 0 1
  • 停筆已經(jīng)很久很久了……突然很懷念那種竟块,把所有的喜怒哀樂都記載下來壶运,當(dāng)有一天再回首時(shí)就可以看到歲月的印跡!從暗淡...
    忘伊人閱讀 164評論 0 0