1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          declare 用法詳解

          來源:互聯網轉載 時間:2024-01-29 08:03:28

          shell數組和declare用法

          用途說明

          declare命令是bash的一個內建命令,它可以用來聲明shell變量,設置變量的屬性(declare variables and/or give them attributes)。該命令也可以寫作typeset。雖然人們很少使用這個命令,如果知道了它的一些用法,就會發現這個命令還是挺有用的。

          常用參數

          格式:declare

          格式:typeset

          格式:declare -p

          格式:typeset -p

          顯示所有變量的值。

          格式:declare -p var

          格式:typeset -p var

          顯示指定變量var的值。

          格式:declare var=value

          格式:typeset var=value

          格式:var=value

          聲明變量并賦值。

          格式:declare -i var

          格式:typeset -i var

          將變量var定義成整數。在之后就可以直接對表達式求值,結果只能是整數。如果求值失敗或者不是整數,就設置為0。

          格式:declare -r var

          格式:typeset -r var

          格式:readonly var

          將變量var聲明為只讀變量。只讀變量不允許修改,也不允許刪除。

          格式:declare -a var

          格式:typeset -a var

          將變量var聲明為數組變量。但這沒有必要。所有變量都不必顯式定義就可以用作數組。事實上,在某種意義上,似乎所有變量都是數組,而且賦值給沒有下標的變量與賦值給"[0]"相同。

          格式:declare -f

          格式:typeset -f

          顯示所有自定義函數,包括名稱和函數體。

          格式:declare -F

          格式:typeset -F

          顯示所有自定義函數名稱。

          格式:declare -f func

          格式:typeset -f func

          只顯示指定函數func的函數定義。

          格式:declare -x var

          格式:typeset -x var

          格式:export var

          將變量var設置成環境變量,這樣在隨后的腳本和程序中可以使用。

          格式:declare -x var=value

          格式:typeset -x var=value

          格式:export var=value

          將變量var設置陳環境變量,并賦值為value。

          使用示例

          示例一 declare是內建命令

          [root@web ~]#type -a declare
          declare is a shell builtin
          [root@web ~]#

          [root@jfht ~]#type -a typeset
          typeset is a shell builtin
          [root@jfht ~]#

          示例二 declare -i之后可以直接對表達式求值

          [root@web ~]#x=6/3
          [root@web ~]#echo $x
          6/3
          [root@web ~]#declare -i x
          [root@web ~]#echo $x
          6/3
          [root@web ~]#x=6/3
          [root@web ~]#echo $x
          2

          如果變量被聲明成整數,可以把表達式直接賦值給它,bash會對它求值。

          [root@jfht ~]#x=error
          [root@jfht ~]#echo $x
          0

          如果變量被聲明成整數,把一個結果不是整數的表達式賦值給它時,就會變成0.

          [root@jfht ~]#x=3.14
          -bash: 3.14: syntax error: invalid arithmetic operator (error token is ".14")
          如果變量被聲明成整數,把一個小數(浮點數)賦值給它時,也是不行的。因為bash并不內置對浮點數的支持。
          [root@web ~]#

          [root@jfht ~]#declare +i x

          此命令的結果是取消變量x的整數類型屬性。
          [root@jfht ~]#x=6/3
          [root@jfht ~]#echo $x
          6/3

          因為變量x不是整型變量,所以不會自動對表達式求值??梢圆捎孟旅鎯蓚€方式。

          [root@jfht ~]#x=$[6/3]
          [root@jfht ~]#echo $x
          2
          [root@jfht ~]#x=$((6/3))
          [root@jfht ~]#echo $x
          2
          [root@jfht ~]#

          示例三 聲明只讀變量

          [root@jfht ~]#declare -r r
          [root@jfht ~]#echo $r

          [root@jfht ~]#r=xxx
          -bash: r: readonly variable
          [root@jfht ~]#declare -r r=xxx
          -bash: declare: r: readonly variable
          [root@jfht ~]#declare +r r
          -bash: declare: r: readonly variable
          [root@jfht ~]#
          [root@jfht ~]#declare +r r
          -bash: declare: r: readonly variable
          [root@jfht ~]#
          [root@jfht ~]#unset r
          -bash: unset: r: cannot unset: readonly variable
          [root@jfht ~]#

          示例四 聲明數組變量(實際上,任何變量都可以當做數組來操作)

          [root@jfht ~]#declare -a names
          [root@jfht ~]#names=Jack
          [root@jfht ~]#echo ${names[0]}
          Jack
          [root@jfht ~]#names[1]=Bone
          [root@jfht ~]#echo ${names[1]}
          Bone
          [root@jfht ~]#echo ${names}
          Jack
          [root@jfht ~]#echo ${names[*]}
          Jack Bone
          [root@jfht ~]#echo ${#names}
          4

          直接引用names,相當于引用names[0]
          [root@jfht ~]#echo ${#names[*]}
          2

          [root@jfht ~]#echo ${names[@]}
          Jack Bone
          [root@jfht ~]#echo ${#names[@]}
          2

          [root@jfht ~]#declare -p names
          declare -a names='([0]="Jack" [1]="Bone")'
          [root@jfht ~]#

          示例五 顯示函數定義

          [root@jfht ~]#declare -F
          declare -f add_jar
          declare -f add_jar2
          declare -f add_jar3
          [root@jfht ~]#declare -f
          add_jar ()
          {
          [ -e $1 ] && CLASSPATH=$CLASSPATH:$1
          }
          add_jar2 ()
          {
          if [ -e $1 ]; then
          CLASSPATH=$CLASSPATH:$1;
          else
          if [ -e $2 ]; then
          CLASSPATH=$CLASSPATH:$2;
          fi;
          fi
          }
          add_jar3 ()
          {
          if [ -e $1 ]; then
          CLASSPATH=$CLASSPATH:$1;
          else
          if [ -e $2 ]; then
          CLASSPATH=$CLASSPATH:$2;
          else
          if [ -e $3 ]; then
          CLASSPATH=$CLASSPATH:$3;
          fi;
          fi;
          fi
          }
          [root@jfht ~]#declare -f add_jar
          add_jar ()
          {
          [ -e $1 ] && CLASSPATH=$CLASSPATH:$1
          }
          [root@jfht ~]#declare -F add_jar
          add_jar
          [root@jfht ~]#declare -F add_
          [root@jfht ~]#declare -F add_*
          [root@jfht ~]#declare -F 'add_*'
          [root@jfht ~]#

          Shell腳本生成不重復的隨機數

          #!/bin/bash
          #AUTHOR:AN
          #DATE:2019-3-24
          #Describe:Generate No-Repeat Random-Number
          #Method:如生成3~7的隨機數,先生成0~4(7-3)的隨機數,再加上3(起始值)來修正
          ######################################################################
          echo "產生不重復的隨機正整數!!!"
          read -p "輸入隨機數范圍的起始值:" Start_Num
          read -p "輸入隨機數范圍的結束值:" End_Num
          #控制數組的長度,且用于RANDOM的被余數
          Array_Length=$[End_Num-Start_Num+1]
          #定義數組,用來存儲最終生成的隨機數
          typeset RAND
          #循環生成$Array_Length個隨機數
          for ((i=0;i<$Array_Length;i++))
          do
          Rnum=$[RANDOM%$Array_Length+Start_Num]
          #提取數組的長度
          Length=${#RAND[@]}
          #雙if語句思路:先給數組賦第一個值,然后拿后面生成的隨機數依次與數組的元素進行對比
          #如果相同重新產生一個隨機數,如果不同則存入數組
          if [ $Length -eq 0 ];then
          RAND[$i]=$Rnum
          else
          for ((j=0;j<$Length;j++))
          do
          if [ $Rnum != ${RAND[$j]} ];then
          continue
          else
          Rnum=$[RANDOM%$Array_Length+Start_Num]
          j=-1
          fi
          done
          RAND[$i]=$Rnum
          fi
          done
          #輸出數組的值
          for ((x=0;x<$Array_Length;x++))
          do
          echo ${RAND[$x]}
          done

          標簽:SHELLDECLARE-
          上一篇:源碼學習攻略
          下一篇:基于Centos7.X的CS

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          百事樂手機值得購買嗎?值得購買。百事手機不錯。是一款雙攝手機,背面配備了200萬1300萬像素雙攝像頭,可以拍出虛化效果更好的照片,前置800萬像素副攝像頭支持美顏拍攝。此外,這款手機不僅有3G和32G的標準版,還有6G 128G的驚艷版,大容量內存,如此大的面積在同品牌中并不多見。百事樂手機值得購買嗎?不值得。百事手機應該是名牌手機,功能不如華為手機。國產的華為手機無論是性能還是像素都很優秀。手...

          北京五道口在哪個區 五道口屬于北京哪個區?三里屯五道口是啥? 北京市海淀區五道口位于北四環路,位于八所大學的中心區域。它是中國高等院校和高級知識分子的聚居地。清華大學位于這里,教育環境優越。北京市海淀區五道口是北京語言學院、清華大學、北京大學、地質大學、石油大學、科技大學、航天大學、電影學院、聯合大學、郵電大學、中國人民銀行研究生院等十多所大學的交匯處。韓國學生和許多來中國工作的商人住在這里 ...

          安陽市車輛違章信息怎么查詢?目前有四種方式查詢違規行為。1.到本市各區縣交通分局大隊辦事大廳,通過觸摸查詢終端進行查詢。2.登錄北京市公安局公安交通管理局對外服務網站:通過互聯網查詢。3.撥打語音電話詢問。比如:16888122。4.通過寫短信查詢違規情況。(比如和用戶都是)車輛非現場違章:發送車牌號到011661223。司機記分:發送:檔案編號至:011661222。河南車輛違章查詢?可以直接登...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>