變量用來存儲信息,不能以數字開頭,可以由字母、下劃線、數字組成。
默認類型時字符串類型,進行數值運算時,要指定變量類型爲數值型。
賦值用=號,變量和等號之間不能有空格,變量裏有空格時,要用單引號或雙引號括起來
1、用戶自定義變量
定義變量:
name="hello"
調用變量: 變量名前加$
echo $name
變量疊加:
name="$name"world
name=${name}world
set查看變量
unset刪除變量
2、環境變量
用戶自定義變量只在當前shell中生效
環境變量寫入配置文件後,在所有shell中生效
export 變量名=變量值
env查詢變量
unset刪除變量
PATH //
PS1 //定義系統提示符的變量
3、位置參數變量
向腳本中傳遞參數或數據
$n n爲數字,$0表示命令本身,$1-$9代表第一個參數到第九個參數,十以上要用大括號包含,${10}
$* 代表命令行中的所有參數,把所有參數看作一個整體
$@ 代表命令行中的所有參數,把所有參數區別對待
$# 代表命令行中的所有參數的個數
例子:
vi canshu1.sh //編寫一個腳本,功能是輸出從鍵盤上輸入的內容
/////////////////////
#!/bin/bash
echo $1 輸出第一個參數的內容
echo $2 輸出第二個參數的內容
echo $3 輸出第三個參數的內容
/////////////////////
chmod 777 canshu1.sh //要修改權限
./canshu1.sh 11 22 33 //結果就會輸出11 22 33 這三個數
4、預定義變量
$? 最後一次執行命令的返回狀態,值爲0,表示正確運行,非0,不正確
$$ 當前進程的進程號
$! 後臺運行的最後一個進程的進程號
例子:
輸入:
ls
echo $? 輸出0,因爲ls正確執行
lstbhbj
echo $? 輸出127,因爲沒有這個命令,輸出的數字是系統定義好的
read [選項][變量名]
-p 提示信息
-t 秒數 等待時間
-n 字符數 指定輸入的字符數
-s 隱藏輸入的數據,例如輸入密碼時
例子:
vi canshu2.sh //編輯canshu2.sh腳本
//////////////////////////
#!/bin/bash
read -t 20 -p "please input name" name //輸入姓名
echo $name
read -t 20 -s -p "please input name" age //隱藏輸入年齡
echo $age
read -n 10 -t 20 -p "please input name" ch //輸入長度爲10的ch
echo $ch
/////////////////////////
chmod canshu2.sh
bash canshu2.sh
5、數值運算與運算符
declare [+/-] [選項] 變量名
+ 取消變量的類型屬性
- 給變量設定類型屬性
-i 將變量聲明爲整型
-x 將變量聲明爲環境變量
-p 顯示指定變量的被聲明的類型
expr
dd=$(expr $a + $b) +號兩邊有空格,此語句也是求a,b之和
ff=$(($a+$b)) 此語句也是求a,b之和
6、變量測試與內容替換
根據y的值對一個新的變量x賦值,使用時對照表格即可。