標籤:
shell指令碼(七)
j、數組
#關聯陣列:,一般的數組索引必需是數值,而關聯陣列索引可以是字串
#也可以是數值,與python的字典類似
awk ‘BEGIN {str[name]="string";str[1]="1"};printf("%s\n%s\n",str[name],str[1])}650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/43/wKioL1V35UehNj1wAAA90VAL3GE089.jpg" />
#split函數,注意for(i in name)輸出是隨機的
awk -F: ‘{split($0,name,":");for(i in name) print i,":",name[i]}‘ num.txt
awk -F: ‘{split($0,name,":");for(i=1;i<=NF;i++) print i,":",name[i]}‘ num.txt
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/47/wKiom1V346KyAbQbAADQmw2eHtQ792.jpg" />
#數組形式的系統變數,ENVIRO儲存的是系統內容變數
awk ‘BEGIN { for(i in ENVIRON) print i "=" ENVIRON[i]}‘
5、變數和引用
(1)變數
a、變數替換和賦值
#變數名只能包含大小寫字母、數字、下畫線等符號,並且不能以數字開頭
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/43/wKioL1V35Uiyd0FfAAEMiYRXdlg310.jpg" />
#變數賦值
var=value:將value值賦給var
var+value:對已賦值的var,重設其值
var?value或var:?value:對未賦值的var,顯示系統錯誤資訊
var:=value:對未賦值的var,將value值賦給它
var:-value:對未賦值的var,將value值賦給它,但value值不儲存到var對應的地址空間
echo ${name:-carl}
echo ${name:=carl}
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/47/wKiom1V346OCcG1tAACOhVZopG4175.jpg" />
echo ${var?test}
echo ${var:?test}
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/43/wKioL1V35UjQLczjAABn9thR5e0014.jpg" />
#設定唯讀變數
readonly rdonly
b、無類型的shell指令碼變數
#shell的變數是無類型的,不支援浮點型,只支援整形和字元型
#字元型變數有一個預設整型值0,字元型變數預設為空白,直接將字串賦值給整型
#變數,整型變數就會變成字元變數,讓字元變數自增1,變數就會變成
#整型,並且數值為0
name="test"
num="123"
#將字元變數name強制轉換成整型,值同樣還是"test"
#轉換後直接當數值使用,則預設值=0
declare -i name
echo $name
#將字元型變數自增1,就會變成整型。如果變數值全部是數字,則會當作整型使用
let name++
echo $name
let name++
echo $name
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/47/wKiom1V346OQwXNQAADCHxDlHNY486.jpg" />
c、環境變數
#定義和清除環境變數,環境變數一般使用大寫字母
MYLS=/bin/ls
export MYLS
echo $MYLS
$MYLS
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/43/wKioL1V35UmQcktfAAC8cXBLb_4813.jpg" />
#清除環境變數,清除後變數值預設變為空白
unset MYLS
echo $MYLS
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/47/wKiom1V346Syd_aSAAA2c5Dm-uk988.jpg" />
#常用環境變數
PWD:當前工作目錄
OLDPWD:上一次工作目錄
PATH:指明可執行檔路徑
HOME:目前使用者的根目錄
SHELL:預設為/bin/bash
USER:登入使用者名稱
UID:登入使用者ID
PPID:建立當前進程的進程號,即當前進程的父進程號
PS1:提示符變數,用於設定一級shell提示符格式,預設為"[\[email protected]\h \W]\$"
PS2:提示符變數,用於設定二級shell提示符格式,預設為">",輸入不完全命令時會顯示
\u:表示目前使用者名
\@:表示以12小時制顯示時間
\h:表示主機名稱
\W:表示當前工作目錄名稱
\w:表示當前工作目錄完整名稱
\$:如果UID為0,列印"#";否則,列印"$"
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/43/wKioL1V35UnwPNSRAADPy1WZ_wE319.jpg" />
#IFS:Shell域分隔字元,預設為空白格,改為":",域與域之間就以空格分隔開來
export IFS=:
echo $PATH
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/47/wKiom1V346Tg_8uTAABN40ZxlSQ536.jpg" />
#環境變數設定檔:.bash_profile、.bashrc、.bash_profile和/etc/profile
#前3個全部以隱藏形式存放到$HOME/下,針對對應的使用者,而最後的是針對全域設定
d、位置參數
(2)引用
a、全引用和部分引用
b、命令替換
c、轉義
6、退出、測試、判斷和操作符
(1)
7、變數進階用法
8、I/O重新導向
9、子shell與進程處理
10、函數
11、別名、列表和數組
12、指令碼調試
13、shell實戰
本文出自 “愛就行動” 部落格,請務必保留此出處http://1055745601.blog.51cto.com/5003160/1660425
shell指令碼(七)