【Linux】5.2 Shell變量

Shell變量

1. shell變量簡介

  • Linux Shell的變量分爲,系統變量和用戶自定義變量
  • 系統變量:\(HOME、\)PWD、\(SHELL、\)USER等等
  • 顯示當前shell中全部變量:set

1.1 變量規則

  • 變量名和等號之間不能有空格,這可能和你熟悉的全部編程語言都不同。同時,變量名的命名須遵循以下規則:
  • 命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭。
  • 中間不能有空格,可使用下劃線(_)。
  • 不能使用標點符號。
  • 不能使用bash裏的關鍵字(可用help命令查看保留關鍵字)。
  • 變量名稱通常習慣爲大寫

1.2 shell變量的定義

1.2.1 基本語法

  • 定義變量:變量=值,=兩邊不能有空格
  • 撤銷變量:unset 變量
  • 聲明靜態變量:readonly 變量,注意:不能unset

1.2.2 將命令的返回值賦給變量

  • A=ls -la這裏有反引號(ESC下面),運行裏面的命令,並把結果返回給變量A
  • A=$(ls -la)等價於上面

1.3 使用變量

  • 使用一個定義過的變量,只要在變量名前面加美圓符號便可,如:
your_name="qinjx"
echo $your_name
echo ${your_name}
  • 量名外面的花括號是可選的,加不加都行,加花括號是爲了幫助解釋器識別變量的邊界,好比下面這種狀況:
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

1.4 靜態變量

  • 使用 readonly 命令能夠將變量定義爲只讀變量,只讀變量的值不能被改變。
  • 下面的例子嘗試更改只讀變量,結果報錯:
#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
myUrl="http://www.runoob.com"
#######
# $/bin/sh: NAME: This variable is read only.

1.5 刪除變量

  • 使用 unset 命令能夠刪除變量。語法:unset variable_name
  • 變量被刪除後不能再次使用。unset 命令不能刪除只讀變量。

1.6 變量類型

  1. 局部變量 局部變量在腳本或命令中定義,僅在當前shell實例中有效,其餘shell啓動的程序不能訪問局部變量。
  2. 環境變量 全部的程序,包括shell啓動的程序,都能訪問環境變量,有些程序須要環境變量來保證其正常運行。必要的時候shell腳本也能夠定義環境變量。
  3. shell變量 shell變量是由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行

2. 環境變量

全部的程序,包括shell啓動的程序,都能訪問環境變量,有些程序須要環境變量來保證其正常運行。必要的時候shell腳本也能夠定義環境變量。shell

  • 基本語法
  • export 變量名=變量值:將shell變量輸出爲環境變量
  • source 配置文件:讓修改後的配置文件信息當即生效
  • echo $變量名:查詢環境變量的值

3. Shell 註釋

  • 以 # 開頭的行就是註釋,會被解釋器忽略。
  • 經過每一行加一個 # 號設置多行註釋,像這樣:
#--------------------------------------------
# 這是一個註釋
# author:菜鳥教程
# site:www.runoob.com
# slogan:學的不只是技術,更是夢想!
#--------------------------------------------
##### 用戶配置區 開始 #####
#
#
# 這裏能夠添加腳本描述信息
#
#
##### 用戶配置區 結束  #####

多行註釋編程

  • 多行註釋還可使用如下格式:
:<<EOF
註釋內容...
註釋內容...
註釋內容...
EOF
  • EOF 也可使用其餘符號:
:<<'
註釋內容...
註釋內容...
註釋內容...
'

:<<!
註釋內容...
註釋內容...
註釋內容...
!

4. 位置參數,預約義變量

  • 咱們能夠在執行 Shell 腳本時,向腳本傳遞參數,腳本內獲取參數的格式爲:$n。n 表明一個數字,1 爲執行腳本的第一個參數,2 爲執行腳本的第二個參數,以此類推……
#!/bin/bash

echo "Shell 傳遞參數實例!";
echo "執行的文件名:$0";
echo "第一個參數爲:$1";
echo "第二個參數爲:$2";
echo "第三個參數爲:$3";

:<<!
chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
執行的文件名:./test.sh
第一個參數爲:1
第二個參數爲:2
第三個參數爲:3
!
  • 另外,還有幾個特殊字符用來處理參數:
參數處理 說明
$# 傳遞到腳本的參數個數
$* 以一個單字符串顯示全部向腳本傳遞的參數。如"$*"用「"」括起來的狀況、以"$1 $2 … $n"的形式輸出全部參數。
$$ 腳本運行的當前進程ID號
$! 後臺運行的最後一個進程的ID號
$@ 與$*相同,可是使用時加引號,並在引號中返回每一個參數。如"$@"用「"」括起來的狀況、以"$1" "\(2" … "\)n" 的形式輸出全部參數。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其餘任何值代表有錯誤。
#!/bin/bash
echo "Shell 傳遞參數實例!";
echo "第一個參數爲:$1";
echo "參數個數爲:$#";
echo "傳遞的參數做爲一個字符串顯示:$*";

:<<!
$chmod +x test.sh
$./test.sh 1 2 3
Shell 傳遞參數實例!
第一個參數爲:1
參數個數爲:3
傳遞的參數做爲一個字符串顯示:1 2 3
!
  • 預約義變量實例

相關文章
相關標籤/搜索