第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何檢查在Bash中是否設(shè)置了變量?

如何檢查在Bash中是否設(shè)置了變量?

藍(lán)山帝景 2019-06-24 13:35:29
如何檢查在Bash中是否設(shè)置了變量?我如何知道是否在Bash中設(shè)置了一個(gè)變量?例如,如何檢查用戶是否向函數(shù)提供了第一個(gè)參數(shù)?function a {     # if $1 is set ?}
查看完整描述

3 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

(通常)正確的方法

if [ -z ${var+x} ]; then echo "var is unset"; else echo "var is set to '$var'"; fi

哪里${var+x}參數(shù)展開如果var未設(shè)置,并替換字符串。x不然的話。

引號(hào)離題

引號(hào)可以省略(所以我們可以說(shuō)${var+x}而不是"${var+x}")因?yàn)檫@種語(yǔ)法和用法保證了這只會(huì)擴(kuò)展到不需要引號(hào)的東西(因?yàn)樗梢詳U(kuò)展到x(它不包含分詞,因此不需要引號(hào)),或者不包含(結(jié)果是[ -z  ],它方便地計(jì)算出與以下值相同的值(True):[ -z "" ])。

然而,雖然可以安全地省略引號(hào),但并不是所有人都立即明白這一點(diǎn)(甚至不是顯而易見的)。本引文的第一作者解釋也是一個(gè)主要的bash編碼器),有時(shí)用引號(hào)編寫解決方案會(huì)更好[ -z "${var+x}" ],以極小的O(1)速度懲罰代價(jià)。第一個(gè)作者還在代碼旁邊添加了這個(gè)注釋,使用這個(gè)解決方案給出了這個(gè)答案的URL,這現(xiàn)在還包括了為什么可以安全地省略引號(hào)的解釋。

(經(jīng)常)走錯(cuò)了路

if [ -z "$var" ]; then echo "var is blank"; else echo "var is set to '$var'"; fi

這通常是錯(cuò)誤的,因?yàn)樗鼪](méi)有區(qū)分未設(shè)置的變量和設(shè)置為空字符串的變量。也就是說(shuō),如果var='',則上述解決方案將輸出“var是空”。

在用戶必須指定擴(kuò)展或附加屬性列表的情況下,Unset和“設(shè)置為空字符串”之間的區(qū)別是非常重要的,而不指定這些屬性的默認(rèn)值為非空值,而指定空字符串應(yīng)使腳本使用空擴(kuò)展名或附加屬性列表。

然而,這種區(qū)別在每一種情況下都可能是必要的。在這些情況下[ -z "$var" ]一切都會(huì)好起來(lái)的。


查看完整回答
反對(duì) 回復(fù) 2019-06-24
?
天涯盡頭無(wú)女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

若要檢查非空/非零字符串變量,即如果設(shè)置,請(qǐng)使用

if [ -n "$1" ]

正好相反-z..我發(fā)現(xiàn)自己-n多過(guò)-z.

你會(huì)把它當(dāng)作:

if [ -n "$1" ]; then
  echo "You supplied the first parameter!"else
  echo "First parameter not supplied."fi


查看完整回答
反對(duì) 回復(fù) 2019-06-24
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

下面是如何測(cè)試參數(shù)是否是未定,或空(“空”)或用值設(shè)置:


+--------------------+----------------------+-----------------+-----------------+

|                    |       parameter      |     parameter   |    parameter    |

|                    |   Set and Not Null   |   Set But Null  |      Unset      |

+--------------------+----------------------+-----------------+-----------------+

| ${parameter:-word} | substitute parameter | substitute word | substitute word |

| ${parameter-word}  | substitute parameter | substitute null | substitute word |

| ${parameter:=word} | substitute parameter | assign word     | assign word     |

| ${parameter=word}  | substitute parameter | substitute null | assign word     |

| ${parameter:?word} | substitute parameter | error, exit     | error, exit     |

| ${parameter?word}  | substitute parameter | substitute null | error, exit     |

| ${parameter:+word} | substitute word      | substitute null | substitute null |

| ${parameter+word}  | substitute word      | substitute word | substitute null |

+--------------------+----------------------+-----------------+-----------------+

資料來(lái)源:POSIX:參數(shù)展開式:

在以“替代”表示的所有情況下,表達(dá)式都將替換為所顯示的值。在所有用“賦值”顯示的情況下,都為參數(shù)賦值,這也替換了表達(dá)式。


查看完整回答
反對(duì) 回復(fù) 2019-06-24
  • 3 回答
  • 0 關(guān)注
  • 685 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)