linux中shell中的變數使用說明

來源:互聯網
上載者:User


變數說明:
$$
Shell本身的PID(ProcessID)
$!
Shell最後啟動並執行後台Process的PID
$?
最後啟動並執行命令的結束代碼(傳回值)
$-
使用Set命令設定的Flag一覽
$*
所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$@
所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$#
添加到Shell的參數個數
$0
Shell本身的檔案名稱
$1~$n
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。

下面我們來寫一個簡單的指令碼,執行過後再解釋各個變數的意思

# touch variable
# vi variable
1
2 # touch variable# vi variable

指令碼內容如下:

Shell
#!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"

#!/bin/shecho "number:$#"echo "scname:$0"echo "first :$1"echo "second:$2"echo "argume:$@"

儲存退出

賦予指令碼執行許可權

# chmod +x variable
1 # chmod +x variable
執行指令碼:

# ./variable aa bb
1 # ./variable aa bb
結果:

number:2
scname:./variable
first: aa
second:bb
argume:aa bb

通過顯示結果可以看到:
$# 是傳給指令碼的參數個數
$0 是指令碼本身的名字
$1是傳遞給該shell指令碼的第一個參數
$2是傳遞給該shell指令碼的第二個參數
$@ 是傳給指令碼的所有參數的列表

補充一下關於shell變數


name是變數名,value是變數的值,比如name=zdd,注意,Shell定義變數的時候不需要加$,而使用變數的時候則需要加$,這點和perl是有區別的,perl定義變數的時候也需要$符號。定義變數的時候要注意以下幾點。

•Shell中的變數只能由字母,數字和底線組成,且不能以數字開頭。
•如果變數值中含有空格,應該用引號(單引號雙引號均可)括起,比如 "Hello world"或'Hello world'。
•等號左右都沒有空格。
使用變數
訪問一個變數的時候只要在其前面加一個$即可,比如echo $name,如果不加$,則顯示變數的名字,也就是echo name將顯示name。

陣列變數
Bourne Shell(sh)只支援標量,Korn Shell(ksh)和第二版及更高版本的Bourne Again Shell(bash)都支援陣列變數。

定義數組
為單個元素賦值
name[index]=value

為整個數組賦值
bash

name=(value1 value2... valuen) 各個元素以空格分離。

也可以只為某些元素賦值

name=([0]=value0 [3]=value3 [5]=value5)

ksh

set -A name value1 value2 ... valuen, name是數組名。

使用數組
訪問單個值
${name[index]}

訪問整個數組
${name[*]}

${name[@]} 可以處理包含空格的數組元素,推薦使用。

唯讀變數
定義方法

name=value

readonly name

唯讀變數一旦定義就不可更改其值,也不能用unset刪除。

變數類型
局部變數
在Shell指令碼中由使用者自訂的變數。

環境變數
使用export命令可以查看當前系統的環境變數。

Shell變數
常用的Shell變數有如下這些。

PWD

UID

SHLVL

REPLY

RANDOM

SECONDS

IFS

PATH

HOME

刪除變數
unset name

如何刪除陣列變數?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.