中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中declare命令怎么用

發布時間:2022-01-21 11:10:51 來源:億速云 閱讀:280 作者:小新 欄目:開發技術

小編給大家分享一下Linux中declare命令怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Linux常用命令 declare命令用于聲明 shell 變量,declare為shell指令,在第一種語法中可用來聲明變量并設置變量的屬性([rix]即為變量的屬性),在第二種語法中可用來顯示shell函數。

Linux中declare命令怎么用

declare

聲明變量,設置或顯示變量的值和屬性。

語法

 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命令。
 declare reference_website='https://wangchujiang.com/linux-command/'
 
 # 顯示所有包含整型屬性的變量和值。
 declare -i
 # 定義變量b并賦值為3,具有整型屬性。
 declare -i b=5
 # 顯示屬性,返回 declare -i b="5"。
 declare -p b
 # 刪除整型屬性。
 declare +i b
 # 顯示屬性,返回 declare -- b="5"。
 declare -p b
 # 根據變量屬性強制轉換值的英文大小寫。
 declare -u uc_var='abc'
 declare -l lc_var='ABC'
 # 顯示'ABC abc';
 echo "${uc_var} ${lc_var}"
 # 定義函數內的全局變量
 function test(){
   declare -g a=3
   # 或者
   local -g b=3
   # 或者
   c=3
   # 讓我們查看它們的屬性。
   declare -p a b c
 }
 # 執行函數。
 test
 # 返回結果。
 # declare -- a="3"
 # declare -- b="3"
 # declare -- c="3"
 
 # 定義函數外的全局變量
 declare a=3
 b=3
 declare –p a b
 # 返回結果如下。
 # declare -- a="3"
 # declare -- b="3"
 
 # 定義局部變量
 function test2(){
   local -i a=3
   declare -i b=3
 }
 test2
 # 沒有該變量(已經被銷毀了)
 echo "${a} ${b}"
 # 因此,我們日常腳本中最常見的類似于'a=3'實際上是聲明并賦值了一個全局變量。
 # 在接下來的 **討論** 環節會延伸討論全局和局部變量問題。
 # 注意,不能使用 `+a` 或 `+A` 取消數組,也不能使用 `+r` 取消只讀屬性。
 
 # 定義只讀數組,設置屬性的同時定義賦值。
 declare -ar season=('Spring' 'Summer' 'Autumn' 'Winter')
 # 或者這樣。
 season=('Spring' 'Summer' 'Autumn' 'Winter')
 declare -ar season
 # 顯示所有數組。
 declare -a
 # 定義關聯數組。
 
 declare -A fruits=(['apple']='red' ['banana']='yellow')
 # 顯示所有關聯數組。
 declare -A
 # 顯示所有變量的屬性和值并顯示函數的定義,輸出很長。
 declare
 # 顯示所有變量的屬性和值。
 declare -p
 # 顯示所有全局變量的屬性和值。
 declare -g
 # 顯示全部函數名和函數定義。
 declare -f
 # 只顯示全部函數名。
 declare -F
 
 # 定義兩個函數。
 function func_a(){ echo $(date +"%F %T"); }
 function func_b(){ cd /; ls -lh --sort=time; }
 # 顯示一到多個函數名和函數定義。
 declare -f func_a func_b
 # 只顯示一到多個函數名,驗證某個名稱是否已經定義為函數時有用。
 declare -F func_a func_b
 # 最好不要讓函數名和變量名相同。

討論

  1. 全局和局部變量

    正如上面例子指出的情況,我們在日常編寫程序的時候需要了解這些概念,在這里 做個簡要地介紹,當然你也可以很方便的搜索到相關內容。

    建議函數內使用local命令,函數外使用declare命令。

    不要在腳本中定義過多的全局變量,那樣可能會被其他函數調用造成意料之外的后果,并且也不方便檢查出來。

    更不用說缺乏必要的注釋了 —— ZhuangZhu-74

    相關資料:

    • google提供的編碼規范

    • 全局變量的討論


    • 全局變量:在整個腳本執行期間,只要沒有被刪除就一直存在

    • 局部變量:在函數內定義,函數執行后就被刪除。

  2. 關于declare typeset export local readonly命令

    為什么declare能做到的事,還需要定義其他這些命令呢?

    因為這樣語句含義會更加明確,例如:

    typeset和declare命令一樣。

    • 設置導出屬性的變量時,export var和declare -x var。

    • 在函數內聲明變量時,使用local。

    • 聲明只讀變量,使用readonly。

  3. 關于異常情況

    有多種原因導致declare失敗,關于這些情況可以參考bash在線文檔declare部分(最新版),或執行 info bash 查看declare部分最后一大串an attempt is開頭的句子。

以上是“Linux中declare命令怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天气| 法库县| 宜春市| 乌拉特前旗| 兖州市| 敖汉旗| 赤峰市| 拉孜县| 呈贡县| 泗水县| 阜南县| 新密市| 东方市| 广灵县| 乡城县| 北宁市| 安阳县| 静海县| 罗平县| 凤台县| 红原县| 正定县| 鄂托克旗| 宜都市| 平谷区| 页游| 浑源县| 汶川县| 南华县| 犍为县| 黔西县| 东源县| 顺昌县| 安泽县| 沿河| 南川市| 乾安县| 三河市| 咸阳市| 枣庄市| 汉沽区|