1. 程式人生 > >shell編程之變量

shell編程之變量

root 命令 字符串 傳遞參數 ans 運算 parameter 接收鍵盤輸入 配置

變量設置規則

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編程之變量