1. 程式人生 > >Shell學習之Bash變量詳解(二)

Shell學習之Bash變量詳解(二)

生效 tro 固定 字符 var $0 路徑 查看 列表

Shell學習之Bash變量詳解

目錄

Bash變量

Bash變量註意點

用戶自定義變量

環境變量

位置參數變量

預定義變量

Bash變量

用戶自定義變量:在Bash中由用戶定義的變量。
環境變量:這種變量中主要保存和系統操作環境相關的數據。
位置參數變量:這種變量主要是用來向腳本當中傳遞參數或數據的,變量名不能自定義,變量作用是固定的。
預定義變量:是Bash中已經定義好的變量,變量名不能自定義,變量作用也是固定的。

  

Bash變量註意點

1.變量名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。如果變量名是"2name"則是錯誤的。

2.在Bash中,變量的默認類型都是字符串型,如果要進行數值運算,則必須指定變量類型為數值型。

3.變量用等號連接值,等號左右兩側不能有空格。

4.變量的值如果有空格,需要使用單引號或雙引號包括。

5.在變量的值中,可以使用"\"轉義符。

6.如果需要增加變量的值,那麽可以進行變量值得疊加。不過變量需要用雙引號包含"$變量名"或用${變量名}包含。

7.如果是把命令的結果作為變量值賦予變量,則需要使用反引號或$()包含。

8.環境變量名建議大寫,便於區分。

  

用戶自定義變量

在用戶當前的shell進程中使用
一般在 $HOME/.bash_profile 中定義。
也可以在命令行定義,但只在用戶當前shell進程中有意義,如果在shell中啟動另一個進程或退出,此值將無效。

  

變量定義:
name="liyi"

變量疊加:
name=123
name="$name"456
name=${name}789

變量的調用
echo "$name"
或
echo ${name}

變量查看
set

變量刪除
unset name

  

環境變量

環境變量適用於所有用戶進程
在/etc/profile中進行定義
在用戶進程使用前,必須用export命令導出;建議環境變量都大寫。

  

設置環境變量
export 變量名=變量值


查看環境變量取值
echo $var_name

查詢變量
env

刪除變量
unset變量名
註:該命令只是從當前用戶進程中刪除,不會從文件/etc/profile刪除

  

嵌入shell變量

一般來講,BASH有一些預留的環境變量名,這些變量名不能做其他用
途,通常在/etc/profile中建立這些嵌入的環境變量,但這不絕對,取決於用戶

shell的變量列表:
CDPATH; EXINIT; HOME; IFS; LOGNAME; MAIL; MAILCHECK; PATH; PS1; PS2; SHELL; TERMINFO; TERM; TZ

  


重要環境變量詳解

PATH變量:系統查找命令的目錄,當我們在執行命令時,系統會到這些目錄去尋找命令,然後執行。

假設現在創建一個文件test.sh
chmod 755 test.sh
./test.sh

如果你不想這麽麻煩,怎麽辦?
PATH="PATH":/root(後面為存放test.sh的目錄)

  

PS1變量

技術分享圖片

默認格式:

技術分享圖片

可以定義格式的例子:

PS1=‘[\u@\t\w]\$ ‘

PS1=‘[\u@\@ \h \# \W]\$ ‘

PS1=‘[\u@\h \W]\$ ‘

  

總結:

使用命令定義的環境變量在下次重啟就不會生效。

定義永久環境變量在/etc/profile文件中定義。

位置參數變量

我剛開始聽到名字的時候,我就想到了python中sys.argv[]的功能,其實位置參數變量和它很相似。

都是接收外部參數,這個參數是用戶從外部輸入的,第一個$0為程序本身路徑,從第二個參數起為用戶輸入的參數。

技術分享圖片

例子

#!/bin/bash
echo $0
echo $1
echo $2
echo $3

  

技術分享圖片

#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
echo $sum

  

技術分享圖片

預定義變量

技術分享圖片

Shell學習之Bash變量詳解(二)