shell指令碼(七)

來源:互聯網
上載者:User

標籤:

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指令碼(七)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.