1.功能簡介
declare(別名 typeset)屬 Shell 內建命令,用于申明 Shell 變量并設置變量屬性,或查看已定義的 Shell 變量和函數。若不加上任何參數,只執行 declare/typeset 則會顯示全部的 Shell 變量與函數(與執行 set 指令的效果相同)。
2.命令格式
declare [-aAfFgilrtux] [-p] [name[=value] 。..] typeset [-aAfFgilrtux] [-p] [name[=value] 。..]
3.選項說明
-a:申明數組變量 -A:申明關聯數組,可以使用字符串作為數組索引 -f:僅顯示已定義的函數 -F:不顯示函數定義 -g:指定變量為全局變量,即使在函數內定義變量 -i:聲明整型變量 -l:將變量值的小寫字母變為小寫 -r:設置只讀屬性 -t:設置變量跟蹤屬性,用于跟蹤函數進行調試,對于變量沒有特殊意義 -u:變量值的大寫字母變為大寫 -x:將指定的Shell變量換成環境變量 -p:顯示變量定義的方式和值 +:取消變量屬性,但是 +a 和 +r 無效,無法刪除數組和只讀屬性,可以使用unset刪除數組,但是 unset 不能刪除只讀變量
4.示例
(1)定義關聯數組并訪問。
declare -A assArray=([lucy]=beijing [yoona]=shanghai) #讀取關聯數組全部內容 echo ${assArray[*]} #或 echo ${assArray[@]} #輸出 beijing shanghai #讀取指定索引的數組值 echo ${assArray[lucy]} #輸出: beijing #列出數組索引列表 echo ${!assArray[*]} #或 echo ${!assArray[@]} #輸出 yoona lucy
(2)定義只讀變量。
declare -r name1=“lvlv1” #或 typeset -r name2=“lvlv2” #或 readonly name3=“lvlv3”
Shell 規定,只讀變量生命周期與當前 Shell 腳本進程相同,且不能消除只讀屬性和刪除只讀變量,除非 kill 當前 Shell 腳本進程。
(3)使用-p選項顯示變量 name1 和 name2 的定義方式和當前值。
declare -p name1 name2 #輸出 declare -r name1=“lvlv1” declare -r name2=“lvlv2”
(4)使用-x選項將shell變量轉換為臨時環境變量,供當前Shell會話的其他shell進程使用,退出當前Shell會話則失效。
declare -x name1;
(5)顯示所有 Shell 環境變量。
declare -x
(6)使用+x選項取消變量為環境變量。
delcare +x name1
(7)申明整型變量,賦值浮點型數值將報錯。
declare -i integer=666
原文標題:每天一個 Linux 命令(128):declare/typeset 命令
文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
Linux
+關注
關注
87文章
11345瀏覽量
210417 -
命令
+關注
關注
5文章
696瀏覽量
22114
原文標題:每天一個 Linux 命令(128):declare/typeset 命令
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
常用linux命令
詳解Linux sort命令之掌握排序技巧與實用案例
Linux grep命令詳解
全志T113-S3板載Linux系統信息查詢
![全志T113-S3板載<b class='flag-5'>Linux</b>系統信息查詢](https://file.elecfans.com/web2/M00/5D/1D/poYBAGLzEqqAd54TAAAbaJrrfwc915.png)
Linux系統中shell命令解析
Linux lsof命令的基本用法
![<b class='flag-5'>Linux</b> lsof<b class='flag-5'>命令</b>的基本用法](https://file1.elecfans.com/web1/M00/F3/7F/wKgaoWcYc2mAFw5cAAA4fI5XmGk856.png)
Linux系統中man命令的基本使用
![<b class='flag-5'>Linux</b>系統<b class='flag-5'>中</b>man<b class='flag-5'>命令</b>的基本使用](https://file1.elecfans.com/web2/M00/09/85/wKgaomb5CRSAFPh-AADKBDs3rCM086.jpg)
使用 PREEMPT_RT 在 Ubuntu 中構建實時 Linux 內核
![使用 PREEMPT_RT 在 Ubuntu <b class='flag-5'>中</b>構建實時 <b class='flag-5'>Linux</b> 內核](https://file.elecfans.com/web2/M00/9B/81/pYYBAGQiWjaAbkZoAACBrWp1TiE766.png)
評論