Linux常用命令 declare命令用于聲明 shell 變量,declare為shell指令,在第一種語法中可用來聲明變量并設置變量的屬性([rix]即為變量的屬性),在第二種語法中可用來顯示shell函數。
聲明變量,設置或顯示變量的值和屬性。
declare[-aAfFgilnrtux][-p][name[=value]...]
顯示包含指定屬性的全部變量和值
顯示包含指定屬性的一到多個變量和值
顯示一到多個變量的屬性和值
顯示所有變量的屬性和值并顯示函數的定義
顯示所有變量的屬性和值
顯示所有全局變量的屬性和值
顯示全部函數名和函數定義
只顯示全部函數名
顯示一到多個函數名和函數定義
只顯示一到多個函數名
聲明全局變量(可選:賦值)
聲明變量(可選:賦值、屬性)
增加、刪除變量的屬性(可選:賦值)
-f將操作或顯示限制為函數名及函數定義。-F只顯示函數名(調試時附加行號和源文件)。-g在shell函數中使用時創建全局變量;其他情況下忽略。-p顯示每個名稱的屬性和值。*設置屬性的選項:-a創建數組(如果支持)。-A創建關聯數組(如果支持)。-i增加整型屬性。+i刪除整型屬性。-l增加小寫屬性,變量的值將轉換為小寫。+l刪除小寫屬性。-n增加引用屬性(如果該選項存在)。+n刪除引用屬性(如果該選項存在)。-r增加只讀屬性。-t增加追蹤屬性。+t刪除追蹤屬性。-u增加大寫屬性,變量的值將轉換為大寫。+u刪除大寫屬性。-x增加導出屬性。+x刪除導出屬性。
name(可選):變量名或函數名。value(可選):變量的值。
declare 返回true除非你提供了非法選項或賦值錯誤。具體導致異常的情況請查看討論章節的關于異常情況。
#聲明變量,當然也歡迎您在這個網站(感謝本項目發起人@jaywcjlove)查詢linux命令。declarereference_website='https://wangchujiang.com/linux-command/'#顯示所有包含整型屬性的變量和值。declare-i#定義變量b并賦值為3,具有整型屬性。declare-ib=5#顯示屬性,返回declare-ib="5"。declare-pb#刪除整型屬性。declare+ib#顯示屬性,返回declare--b="5"。declare-pb#根據變量屬性強制轉換值的英文大小寫。declare-uuc_var='abc'declare-llc_var='ABC'#顯示'ABCabc';echo"${uc_var}${lc_var}"
#定義函數內的全局變量functiontest(){declare-ga=3#或者local-gb=3#或者c=3#讓我們查看它們的屬性。declare-pabc}#執行函數。test#返回結果。#declare--a="3"#declare--b="3"#declare--c="3"#定義函數外的全局變量declarea=3b=3declare–pab#返回結果如下。#declare--a="3"#declare--b="3"#定義局部變量functiontest2(){local-ia=3declare-ib=3}test2#沒有該變量(已經被銷毀了)echo"${a}$"#因此,我們日常腳本中最常見的類似于'a=3'實際上是聲明并賦值了一個全局變量。#在接下來的**討論**環節會延伸討論全局和局部變量問題。
#注意,不能使用`+a`或`+A`取消數組,也不能使用`+r`取消只讀屬性。#定義只讀數組,設置屬性的同時定義賦值。declare-arseason=('Spring''Summer''Autumn''Winter')#或者這樣。season=('Spring''Summer''Autumn''Winter')declare-arseason#顯示所有數組。declare-a#定義關聯數組。declare-Afruits=(['apple']='red'['banana']='yellow')#顯示所有關聯數組。declare-A
#顯示所有變量的屬性和值并顯示函數的定義,輸出很長。declare#顯示所有變量的屬性和值。declare-p#顯示所有全局變量的屬性和值。declare-g
#顯示全部函數名和函數定義。declare-f#只顯示全部函數名。declare-F#定義兩個函數。functionfunc_a(){echo$(date+"%F%T");}functionfunc_b(){cd/;ls-lh--sort=time;}#顯示一到多個函數名和函數定義。declare-ffunc_afunc_b#只顯示一到多個函數名,驗證某個名稱是否已經定義為函數時有用。declare-Ffunc_afunc_b#最好不要讓函數名和變量名相同。
全局和局部變量
正如上面例子指出的情況,我們在日常編寫程序的時候需要了解這些概念,在這里 做個簡要地介紹,當然你也可以很方便的搜索到相關內容。
建議函數內使用local命令,函數外使用declare命令。
不要在腳本中定義過多的全局變量,那樣可能會被其他函數調用造成意料之外的后果,并且也不方便檢查出來。
更不用說缺乏必要的注釋了 —— ZhuangZhu-74
相關資料:
google提供的編碼規范
全局變量的討論
全局變量:在整個腳本執行期間,只要沒有被刪除就一直存在。
局部變量:在函數內定義,函數執行后就被刪除。
關于declare typeset export local readonly命令
為什么declare能做到的事,還需要定義其他這些命令呢?
因為這樣語句含義會更加明確,例如:
typeset和declare命令一樣。
設置導出屬性的變量時,export var和declare -x var。
在函數內聲明變量時,使用local。
聲明只讀變量,使用readonly。
關于異常情況
有多種原因導致declare失敗,關于這些情況可以參考bash在線文檔declare部分(最新版),或執行 info bash 查看declare部分最后一大串an attempt is開頭的句子。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖片僅供參考)隨著社會越來越發達,大家都選擇在網絡上汲取相關知識內容,比如國際互聯網的奇妙之處有哪些,為了更好的解答大家的問題,小編也是翻閱整理了相應內容,下面就一起來看一下吧!1、足不出戶獲取海量國內外信息:了解國內外的時事消息、娛樂新聞、資源分享廣泛,信息傳播速度快等;2、隨時隨地與人交流:可以在短短幾分鐘內從一個國家到另一個國家傳遞聲音;3、可以通過互聯網創業;4、生活方式多樣化:可以...
趨勢選股系統股票工具數據整理,截至2023年3月23日,輔助生殖概念股票成交額排名前十依次是:長春高新、沃森生物、迪安診斷、新華制藥、復星醫藥、通策醫療、思創醫惠、仙琚制藥、華大基因、翰宇藥業。NO.1、長春高新:9.4億元(相關資料圖)股票代碼:000661,公司所在地:吉林,所屬行業:生物制品3月24日上午收盤消息,長春高新(000661)漲0.63%,報167.630元,成交額9.4億元。N...
建行30萬大額存單年利率1、存進一個月,年利率為1.585%;2、存進3個月,年利率為1.595%;3、存進6個月,年利率為1.885%;4、存進一年,年利率為2.175%;5、存進2年,年利率為3.045%。建行三十萬起存三年期大額存款的年化利率為3.987%。假定投資人存進三十萬,那麼每一年可得到貸款利息投資回報率:300000*3.987%=11961元。大額存單的注意事項但話又說回來,銀行...