日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell脚本编程----变量的使用

發布時間:2024/4/17 编程问答 96 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell脚本编程----变量的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接觸Linux Shell腳本編程很久了,但是發現每次學完之后就會忘記,這似乎又印證了那句"好記性不如爛筆頭"的言語,事實確實如此,堅持寫博客,定期回顧,你會感覺很充實。

這是本系列教程的第一篇----變量的使用,該系列文章不是我的原創制作,但它們是我從英文翻譯而來,行文中很夾雜著一些自己的理解和實踐。我喜歡看英文文檔,不過有時候看著看著就想睡覺,本系列教程不會回答諸如Shell是什么?有什么作用的問題,我們會直接敲代碼,直接了當~~接下來讓我們一起一步一步學習Shell編程吧!


在本章中,我們將學習如何在Unix中使用Shell變量。變量是我們為其分配值的字符串。分配的值可以是數字,文本,文件名,設備或任何其他類型的數據。一個變量只不過是指向實際數據的指針,或者說是一個容器,你可以在Shell中創建、分配和刪除變量。

原文網址:https://www.tutorialspoint.com/unix/unix-special-variables.htm

一、變量名

一個Sheel變量名只能由英文字母(A-Z/a-z)、數字(0-9)或下劃線_組成,并且不能由數字打頭,這和Java中變量的命名其實是一樣的~

按照慣例,Shell變量一般都是大寫字母,當然,這并不是必須的。

舉個例子,下面的變量名是合法的:

_ALI TOKEN_A VAR_1 VAR_2 復制代碼

下面的變量是非法的:

2_VAR # 以數字打頭 -VARIABLE # -是非法字符 VAR1-VAR2 VAR_A! # !是特殊字符 復制代碼

你之所以不能使用像!、*、?、-這些字符進行命名,因為這些變量在Shell中有特殊含義。

變量定義

Shell中采用下面的形式定義變量:

variable_name=variable_value 復制代碼

左邊是變量的名字,右邊是變量值。舉個例子:

NAME="Zara Ali" 復制代碼

上面定義了一個Name變量,它的值為Zara Ali,對于這種類型的變量,Shell中稱為標量變量,一個標量變量在某一時刻只能有一個值與之對應。

Shell使您能夠在變量中存儲任何想要的值。舉個例子:

VAR1="Zara Ali" VAR2=100 復制代碼

二、使用變量

如果你想訪問變量的值,在Shell中你需要使用$前綴,舉個例子,下面的腳本將會訪問之前定義的Name變量并將它打印出來。

#!/bin/sh NAME="Zara Ali" echo $NAME 復制代碼

上面的腳本將打印出Zara Ali.

筆者在自己的阿里云測試如下:

三、只讀變量

Shell允許你使用read-only命令將變量聲明為只讀方式,一旦將變量聲明為只讀模式,變量的值不能被改變。

舉個栗子,下面的腳本片段將拋出一個異常信息,因為我們試圖改變一個只讀變量的值:

#!/bin/sh NAME="Zara Ali" readonly NAME NAME="Qadiri" 復制代碼

執行結果如下:

./FirstShell.sh: line 3: NAME: readonly variable

筆者親測如下圖:

四、取消變量賦值

取消變量賦值或刪除變量會指示shell從它跟蹤的變量列表中刪除變量。一旦你取消了某個變量的賦值,你就不能訪問到該變量的值了。

unset命令用于取消某個變量的賦值,其語法格式如下:

unset variable_name

舉個例子:

#!/bin/sh NAME="Zara Ali" unset NAME echo $NAME 復制代碼

上面的腳本不會打印出任何東西,因為你不能輸出使用unset命令修飾的變量,此時變量已經沒有值了。你可能會問,那么被unset修飾過的變量還可以再次被賦值嗎?答案是肯定的。筆者將腳本修改如下:

#!/bin/sh NAME="Zara Ali" unset NAME NAME="S" echo $NAME 復制代碼

上面的腳本將會輸出S

五、變量類型

Shell中主要存在三種變量類型,分別是:

  • 1、局部變量

    局部變量就是只存在與某個shell實例的變量,它不適用于由shell啟動的程序。 它們在命令提示符處設置。

  • 2、環境變量

    環境變量可用于shell的任何子進程。 某些程序需要環境變量才能正常工作。 通常,shell腳本只定義它運行的程序所需的那些環境變量。

  • 3、Shell變量

    一個shell變量是一個特殊的變量,它由shell設置并且為了正常工作而被shell需要。 其中一些變量是環境變量,而另一些則是局部變量。

六、特殊變量

在此節中我們將討論Unix中的特殊變量。舉個例子,$表示當前Shell所處的進程號PID:

echo $$

上面將輸出你當前的PID,如:

下面表格列出了你能在Shell腳本中使用的特殊變量:

S.NOVariable & Description
1$0
當前腳本的文件名稱
2$n
這些變量對應于腳本被調用的參數,如$1表示調用該腳本時傳入參數中的第一個參數,$2表示第二個,以此類推
3$#
調用當前腳本傳入的參數個數
4$*
傳遞給腳本或函數的所有參數
5$@
傳遞給腳本或函數的所有參數
6$?
上個命令的退出狀態,或函數的返回值
7$$
當前Shell進程ID。對于 Shell 腳本,就是這些腳本所在的進程ID。
8$!
最后一個后臺命令的進程號PID

七、命令行參數

命令行參數$1,$2,$3,...,$9是位置參數,$0指向實際的命令,程序,shell腳本或函數,$1,$2,$3,...,$9作為參數命令。下面的栗子展示了各種特殊變量的使用:

#!/bin/sh echo "File Name: $0" echo "First Parameter : $1" echo "Second Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" 復制代碼

采用下面的方式運行,結果如下:

$./FirstShell.sh Zara Ali File Name : ./FirstShell.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2 復制代碼

八、$*和$@的區別

$* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號("")包含時,都以$1 $2 … $n的形式輸出所有參數。

但是當它們被雙引號("")包含時,$* 會將所有的參數作為一個整體,以$1 $2 … $n的形式輸出所有參數;$@ 會將各個參數分開,以$1 $2 … $n 的形式輸出所有參數

#!/bin/sh for TOKEN in "$*" doecho $TOKEN donefor token in "$@" doecho $token done 復制代碼

上面腳本中*被雙引號包括,當采用下面方式調用時,兩者輸出的結果是不一樣的,如下:

九、退出狀態

$!表示上一條命令或者函數的執行狀態,如果返回0,則表示執行成功,1表示失敗

總結

以上是生活随笔為你收集整理的Shell脚本编程----变量的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。