shell編程之變量
變量設置規則
1、變量名稱可以由字母、數字和下劃線組成,但不能以數字開頭;
2、在Bash中,變量的默認類型是字符串,如果要進行數值運算,則必須指定變量類型為數值型;
3、變量用等號連接值,等號左右兩側不能有空格;
4、變量的值如果有空格,需要使用單引號或雙引號包括;
5、在變量的值中,可以使用“\”轉義符;
6、如果需要增加變量的值,那麽可以進行變量值的疊加,不過變量需要使用雙引號包含“$變量名”或用${變量名}包含;
7、如果把命令的結果作為變量值賦予變量,則需要使用反引號或$()包含命令;
8、環境變量名建議大寫,便於區分。
變量分類
1、用戶自定義變量
2、環境變量
3、位置參數變量:用來向腳本當中傳遞參數或數據的,變量名不能自定義,變量作用是固定的
4、預定義變量:是Bash中已經定義好的變量,變量名不能自定義,變量作用是固定的
set 查看系統中所有的變量
echo $name 調用變量
unset name 刪除變量,不帶$
執行set命令後,可看到PATH環境變量,即系統查找命令的路徑
環境變量
用戶自定義變量只在當前的shell中生效,而環境變量會在當前shell和這個shell的所有子shell當中生效。如果把環境變量寫入相應的配置文件,那麽這個環境變量就會在所有的shell中生效
設置環境變量
export 變量名=變量值 申明環境變量,聲明後子shell就可以使用該變量
env 查詢變量
unset 變量名 刪除變量
位置參數變量
計算兩個數之和的shell腳本:
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
echo $sum
[root@192 test]# cat canshu2.sh
#!/bin/bash
for i in "$*"
do
echo "The parameters is:$i"
done
x=1
for j in "$@"
do
echo "The parameters is:$j"
x=$(($x+1))
done
[root@192 test]# ./canshu2.sh 1 2 3 4 5 6
The parameters is:1 2 3 4 5 6
The parameters is:1
The parameters is:2
The parameters is:3
The parameters is:4
The parameters is:5
The parameters is:6
預定義變量
$$ 當前腳本執行時,生成的進程的PID
$!
[root@192 test]# echo $?
0
[root@192 test]# sdfadsf
-bash: sdfadsf: command not found
[root@192 test]# echo $?
127
接收鍵盤輸入
read [選項] [變量名]
-p 提示信息:在等待read輸入時,輸出提示信息
-t 秒數:read命令會一直等待用戶輸入,使用此選項可以指定等待時間
-n 字符數:read命令只接受指定的字符數,就會執行,不用回車
-s :隱藏輸入的數據,保密
[root@192 test]# cat read.sh
#!/bin/bash
read -t 30 -p "Please input your name:" name
#提示輸入姓名,等待30秒,將用戶輸入的值賦值給變量name
echo "Input name is $name"
read -s -t 30 -p "Please enter your age:" age
#年齡是隱私,所以用-s選項隱藏輸入
echo "Enter age is $age"
echo -e "\n"
read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
#選擇性別,接收一個字符後就執行,不用回車
echo -e "\n"
echo "Sex is $gender"
shell編程之變量