Shell編程之變數
【1】Bash變數
●什麼是變數與變數分類
◆在Bash中,變數的默認類型都是字元串
◆變數名在有效的範圍內必須是唯一的
●用戶自定義變數
◆變數自定義的
◆定義變數
★變數名=變數值;x=5 #「=」兩邊不能有空格
name="ao"
◆變數調用
★echo $變數名;echo $x #調用變數需要在變數前+$
echo $name
◆變數疊加
★x=123
x="$x"123
echo $x ;123123
◆變數查看
★set 查詢系統能夠所有生效變數
-u 調用未聲明變數時會報錯
●環境變數
◆這種變數中主要保存的是和系統操作環境相關的數據。變數可以自定義,但是對系統生效的環境變數名和變數作用是固定的
◆用戶自定義變數只在當前的shell中生效,環境變數在當前shell和這個shell的所有子shell中生效
Advertisements
◆對系統生效的環境變數名和變數作用是固定的
◆設置環境變數
★export 變數名=變數值
◆變數查看
★env
◆常用環境變數
★PATH變數:系統查找命令的路徑
echo $PATH #查看PATH環境變數
PATH="$PATH":/root/sh #增加PATH變數值
★PS1變數:命令提示符設置
◆當前語系查詢
★locale #查詢當前語系系統
LANG :定義系統主語系的變數
LC_ALL:定義整體語系的變數
★locale -a #查看Linux支持的所有語系
●位置參數變數
◆這種變數主要是用來向腳本當中傳遞參數或數據的,變數名不能自定義,變數作用是固定的
◆$n ★n為數字,$0代表命令本身,$!-$9代表第一到第九個參數,10以上的參數需要用大括弧包含,如${10}
Advertisements
◆$* ★這個變數代表命令行中所有的參數,$*把所有的參數看成一個整體
◆$@ ★這個變數也代表命令行中所有的參數,不過$@把每個參數區分對待
◆$# ★這個變數代表命令行中所有參數的個數
◆#!/bin/bash
num1=$1 #第一個參數的值
num2=$2
num=$(($num1+$num2)) #將$1+$2的值相加
echo "\$ :$num" #「\」轉義符
./canshu1.sh 12 23
◆ #!/bin/bash
for i in "$@"
do
echo $i #循環輸出"$@"中的值
done
for i in "$*"
do
echo $i #循環輸出"$*"中的值
done
●預定義變數
◆是Bash中已經定義好的變數,變數名不能自定義,變數作用也是固定的
◆$? ★最後一次執行命令的返回狀態,正確執行為0,不能正確為 非0
◆$$ ★當前進程的PID號
◆$! ★後台運行的最後一個進程的PID號
◆ #!/bin/bash
echo "\$$ = $$" #當前進程
echo "\$! = $!" #最後一個進程
●接受鍵盤輸入
◆read [選項][變數名]
★選項
-p「提示信息」:在等待read輸入時,輸出提示信息
-t 秒數:read命令會一直等待用戶輸入,使用此選項可以指定等待時間
-n 字元數:read命令只接受指定的字元數,就會執行
-s :隱藏輸入的數據,適用於機密信息的輸入
◆ #!/bin/bash
read -p "input you name: "-t 15 -n 6 -s name
echo $name