一、變量類型
1.1、自定義變量
1.定義變量
不能使用純數字命名,不能使用橫杠命名
變量名=變量值
[root@localhost ~]# name=erha
2.引用變量
$變量名 或者 ${變量量名}
3.查看變量值
echo $變量量名
[root@localhost ~]# echo $name
erha
4.取消變量
[root@localhost ~]# unset name
[root@localhost ~]# echo $name
5.作⽤用范圍
僅在當前shell中有效
1.2、系統環境變量
1.定義環境變量
export 變量名
將⾃定義變量轉換成環境變量,先定義,后准換
[root@localhost ~]# name=huahua
[root@localhost ~]# export name
2.引用環境變量
$變量名 或 ${變量名}
3.查看環境變量
echo $變量名
[root@localhost ~]# echo $name
huahua
4.取消環境變量
unset 變量量名
[root@localhost ~]# unset name
[root@localhost ~]# env |grep name
#取消該變量后,查詢系統環境變量中,就沒name這個變量了。
5.變量作⽤用范圍
在當前shell和⼦shell有效
1.3、系統環境變量
$1 $2 $3 $4 $5 $6 ...
#$1代表向腳本內傳遞的第一個位置參數,$2代表第二個,依次類推。
1.4、預定義變量
$0 腳本⽂文件名
$* $@ 所有的參數
$# 參數的個數
$$ 當前進程的 PID
$! 上一個后台進程的 PID
$? 上一個命令的返回值 0 表示成功
小腳本
[root@localhost ~]# cat var.sh
#!/bin/bash
echo "第一個參數:$1"
echo "第二個參數:$2"
echo "第三個參數:$3"
echo "第四個參數:$4"
echo "所有參數為:$*"
echo "參數個數為:$#"
echo "當前進程ID為:$$"
echo "上一個進程ID為:$!"
echo "當前腳本名稱為:$0"
echo "當前腳本執行結果:$?"
執行如下
[root@localhost ~]# sh var.sh 1 2 3 4 5
第一個參數:1
第二個參數:2
第三個參數:3
第四個參數:4
所有參數為:1 2 3 4 5
參數個數為:5
當前進程ID為:8875
上一個進程ID為:
當前腳本名稱為:var.sh
當前腳本執行結果:0
二、變量賦值
2.1、直接賦值
[root@localhost ~]# name=huahua
#注意等號兩邊不能有空格
2.2、從鍵盤讀入
[root@localhost ~]# read 參數 變量名
可選參數
-p :提示信息
-t :等待時間
-n :讀入字符數
小腳本
解壓文件到指定位置
[root@localhost ~]# cat tr.sh
#!/bin/bash
read -p "請輸入要解壓的文件,及解壓目錄:" src dst
if [ -e $src ];then
tar -zxvf $src -C $dst
else
echo "沒有該文件..."
fi
2.3、強引用與弱引用
"" :弱引用,特殊字符依舊有特定含義。
[root@localhost ~]# age=18
[root@localhost ~]# echo "$age"
18
'' :強引用,所有字符被當作普通字符處理。
[root@localhost ~]# echo '$name'
$name
2.4、命令執行結果引用
`` :反引號,不過容易與引號混淆。
[root@localhost ~]# t1=`date +%F`
[root@localhost ~]# echo $t1
2020-01-20
$():$加小括號,不容易混淆,一般使用這種方式較多
[root@localhost ~]# t2=$(date +%F)
[root@localhost ~]# echo $t2
2020-01-20
三、數學運算
3.1、整數運算(expr)
加 減 乘 除 取余
+ - \* / %
[root@localhost ~]# expr 1 + 1
2
[root@localhost ~]# expr 1 - 1
0
[root@localhost ~]# expr 1 \* 1
1
[root@localhost ~]# expr 1 / 1
1
[root@localhost ~]# expr 1 % 1
0
3.2、整數運算($(()))
加 減 乘 除 取余 冪運算
+ - * / % **
[root@localhost ~]# echo $((1 + 2))
3
[root@localhost ~]# echo $((1 - 2))
-1
[root@localhost ~]# echo $((1 * 2))
2
[root@localhost ~]# echo $((1 / 2))
0
[root@localhost ~]# echo $((1 % 2))
1
[root@localhost ~]# echo $((1 ** 2))
1
3.3、整數運算($[])
與 $(())類似
[root@localhost ~]# echo $[1+2]
3
[root@localhost ~]# echo $[1-2]
-1
[root@localhost ~]# echo $[1*2]
2
[root@localhost ~]# echo $[1/2]
0
[root@localhost ~]# echo $[1**2]
1
3.4、整數運算(let)
加 減 乘 除 取余 冪運算
+ - * / % **
[root@localhost ~]# let nu=2**4
[root@localhost ~]# echo $nu
16
3.5、小數運算
可以使用bc命令
[root@localhost ~]# echo "1.1"+"2.3"|bc
3.4
