shell指令碼中的變數

2021-05-25 14:09:18 字數 2901 閱讀 9877

1     在命令列中和指令碼中,

變數定義得格式:

name=value             //=左右兩邊不能有空格,否則會當做命令來對待,輸出乙個command not found

echo $name             //echo 列印出變數,引用變數使用$name.

2         單引號和雙引號 語法  和php中相同:

雙引號仍然可以保有變數的內容,但單引號內僅能是一般字元,而不會有特殊符號。

如:myname="$name is me"

echo $myname

jack is me.

myname='$name is me'

echo $myname

$name is me

3檢視環境變數,mysql和shell有類似的功能。

env             //檢視環境變數

set              //檢視區域性變數和環境變數

export  $name       //將區域性變數匯入為環境變數。

4互動式設定變數的值

read    [-pt]   name//具體選項可檢視幫助

:hello world                         //使用者的輸入

echo $name

hello world

declare [-aixr]    name                 //宣告變數得型別

sum=100+300+50

echo $name

100+300+50

declare -i sum=100+50+30

echo $sum

5             引用陣列變數

就假設使用read得到的陣列

read -p "input the array"  arr

: hello world                              //使用者輸入

echo  $arr[0]

hello[0]               //輸出錯誤,不能這樣呼叫陣列變數。

正確呼叫陣列變數得方式

echo $(arr[1])           //小括號,讓其接合起來。

順便提及在${}//{}大括號中放置command,${}將其返回值取出來。

6               引用${}對變數的操作表:

file=/dir1/dir2/dir3/my.file.txt

我們可以用 $ 分別替換獲得不同的值:

$:從變數file的字串左邊開始,刪除字元直到第乙個「/」:dir1/dir2/dir3/my.file.txt

$:從變數file的字串左邊開始,刪除字元直到最後乙個「/」:my.file.txt

$:從變數file的字串左邊開始,刪除字元直到第乙個「.」:file.txt

$:從變數file的字串左邊開始,刪除字元直到最後乙個「.」:txt

其實,在「#」後面,無非就是乙個匹配問題(是linux中通用的萬用字元),不限於兩個,你可以放任意個字元,還可以用shell中另外的萬用字元「?」「[…]」「[!…]」, 例如:

$ echo $

1/dir2/dir3/my.file.txt

$ echo $

/dir2/dir3/my.file.txt

$ echo $

/dir3/my.file.txt

上面是從頭往後匹配,下面分別是從後往前匹配,和替換:

至於「%」,和「#」不同的地方,就是從變數字串右部開始。

$:從右部開始拿掉字元,直到遇到(從右部數起的)第乙個「/」 :/dir1/dir2/dir3

$:從右部開始拿掉字元,直到遇到(從右部數起的)最後乙個「/」:(空值)

$:從右部開始拿掉字元,直到遇到(從右部數起的)第乙個「.」:/dir1/dir2/dir3/my.file

$:從右部開始拿掉字元,直到遇到(從右部數起的)最後乙個「.」:/dir1/dir2/dir3/my

替換:

$       //只替換第乙個匹配上的

$       //替換所有匹配上得,是

7萬用字元和特殊符號

符號 內容

* 萬用字元,代表乙個或多個字元(或數字)

? 萬用字元,代表乙個字母

# 批註,這個最常被使用在 script 當中,視為說明!

/ 跳脫符號,將『特殊字元或萬用字元』還原成一般字元

| 分隔兩個管線命令的界定 ;

; 連續性命令的界定(注意!與管線命令並不相同)

~ 使用者的家目錄

$ 亦即是變數之前需要加的變數取代值

& 將指令變成背景下工作

! 邏輯運算意義上的『非』 not 的意思!

/ 路徑分隔的符號

>, >>

輸出導向,分別是『取代』與『累加』

' 單引號,不具有變數置換的功能

" 具有變數置換的功能!

` `

兩個『 ` 』中間為可以先執行的指令!

(   )

在中間為子 shell 的起始與結束

[  ]

在中間為字元的組合

在中間為命令區塊的組合!

shell指令碼中的變數

變數就是記憶體一片區域的位址 命令無法操作一直變化的目標 用一串固定的字元來表示不固定的目標可以解決此問題 export宣告 env顯示所有環境變數 echo path export a 1 在環境關閉後變數失效 字元 數字 轉譯單個字元 弱引用,批量轉譯個數字元 不能轉譯 強引用 表示當前程序的i...

shell指令碼中的變數

後記面試中很重要 在系統中,當我們執行 bin ls時與ls命令結果並不相同,因為ls是已經經過加工過的命令。alias xie vim 臨時設定,開啟了新的shell就會失效 vim bashrc 只對當前使用者生效 alias xie vim source bashrc vim etc bash...

shell指令碼中的變數

定義本身 變數就是記憶體一片區域的位址 變數存在的意義 命令無法操作一直變化的目標 用一串固定的字元來表示不固定的目標可以解決此問題 環境級別 使用者級別 系統級別 變數名稱 轉譯 轉譯單個字元 雙引號 弱引用,批量轉譯個數字元,不能轉譯 單引號 強引用宣告 變數的陣列 create user.sh...