數組

數組
 
變量:內存的存儲空間;
變量的特點:每個變量中只能存放一個數據,變量只能進行一次性的賦值;

存放本班每個人的名字於變量:
 1.一次性賦值:
  NAME="name1 name2 name3 ..."
 2.使用多個變量,分別賦值:
  NAME1=xu
  NAME2=shen
 3.數組變量:

數組:存放一個或多個元素的連續的內存空間;相當於多個變量的集合;
數組元素:數組中任何一個存放數據的存儲單元;
數組的索引:
 1.數字:索引數組(Index ARRAY)
  0,1,2,...
 2.名稱(字符串):關聯數組(Related ARRAY)
  bash4.0以上的版本才支持;

稠密數組和稀疏數組:
 稠密數組:索引編號必須連續
 稀疏數組:索引編號可以不連續,bash數組屬於此類;

聲明數組:
 1.declare命令
  declare -i NAME:將NAME聲明爲整型變量;
  declare -x NAME:將NAME聲明爲環境變量;

  declare -a NAME:將NAME聲明爲索引數組(如果支持);
  declare -A NAME:將NAME聲明爲關聯數組(如果支持);

  declare -a NAME=("value1" "value2" "value3" ...)
  declare -a NAME=([0]="value1" [1]="value2" [5]="value3" ...)

 2.直接聲明數組:
  直接爲數組賦值:
   ARRAY_NAME=("value1" "value2" "value3" ...) 聲明稠密數組;
   ARRAY_NAME=([0]="value1" [1]="value2" [5]="value3" ...) 聲明稀疏數組;

 3.定義數組的元素而創建數組:
  ARRAY_NAME[0]=value1
  ARRAY_NAME[1]=value2
  ...

引用數組中元素:
 引用變量的方法:${NAME}
 引用數組元素的方法:${ARRAY_NAME[INDEX]}
  注意:如果不給出INDEX,則表示引用數組的第一個元素,即INDEX=0的元素;
 引用整個數組的所有元素:${ARRAY_ANME[*]}或者${ARRAY_ANME[@]}
 引用數組的索引:${!ARRAY_ANME[*]}或者${!ARRAY_ANME[@]}

查看數組的長度(數組中有效元素的個數)
 ${#ARRAY_NAME[*]} 或者 ${#ARRAY_NAME[@]}

數組切片:
 ${ARRAY_NAME:offset}:顯示包括offset數字所表示的索引位置及以後的所有元素;
  ${ARRAY_NAME:6}:跳過0-5,從6開始顯示
 ${ARRAY_NAME:offset:number}:顯示包括offset數字所表示的索引位置及以後的number個元素;${ARRAY_NAME:6:3}:跳過0-5,從6開始顯示3個元素;

想數組中追加元素:
 1.稠密數組:
  ARRAY_NAME[${#ARRAY_NAME[*]}]=valueN
  0 1 2 3 4 5 6 7
 2.稀疏數組:
  ARRAY_ANME[INDEX]=valueN
   注意:INDEX必須爲未被使用的數組元素索引編號;

撤銷數組:
 usnet ARRAY_NAME

刪除數組中的元素:
 unset ARRAY_NAME[INDEX]

RANDOM變量:0-32767
 熵池
 /dev/random
 /dev/urandom

bash腳本編程:
寫一個腳本:
 創建一個用戶alice,如果該用戶已經存在,就提示用戶已經存在的信息;否則將創建用戶;

shell腳本編程的特點:
 過程式編程語言
 腳本類語言
 解釋型語言

過程式編程語言:
 順序執行結構:
  以從左到右,從上到下順序執行所有的語句(命令)
  shell腳本的主體結構;

 選擇執行結構:
  依照給定條件的邏輯判斷結果或者依照可選的取值範圍,進而選擇某個分支中的語句來執行;
  if:分支選擇標準:邏輯判斷的結果;
  case:分支選擇標準:根據可選的取值;

 循環執行結構:
  對於某特定語句,重複執行0次,1次或多次;
  for:遍歷指定的列表;
  while:根據邏輯判斷的結果;
  until:根據邏輯判斷的結果;
  select:死循環,利用循環機制提供選擇列表;

選擇執行結構:
 if語句:
  if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi

 if語句單分支結構:如果條件爲真,則執行then後的命令,否則,不做任何操作;
  if CONDITION
  then STATEMENT
  fi

  if CONDITION ; then
   STATEMENT1
   STATEMENT2
   ...
  fi

 注意:想要執行then後面的STATEMENTS,前提條件是CONDITION部分爲真;

 if語句的雙分支結構:如果條件爲真,就執行then後面的命令;否則就執行else後面的命令;
  if CONDITION ; then
   STATEMENT
   ...
  else
   STATEMENT
   ...
  fi

 if語句的多分支結構:首先判斷CONDITION1是否爲真,如果爲真,則執行第一個then後面的語句;否則就判斷CONDITION2是否爲真,如果爲真,就執行第二個then後面的語句;否則就判斷CONDITION3是否爲真,如果爲真,就執行第三個then後面的語句...;如果所有的CONDITION都爲假,就執行else後面的語句;
  if CONDITION1 ; then
   STATEMENT
   ...
  elif CONDITION2 ; then
   STATEMENT
   ...
  elif CONDITION3 ; then
    STATEMENT
    ...
  ...
  else
   STATEMENT
   ...
  fi

 建議:if多分支結構,能不用就不用;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章