1.變量的分類;
用戶自定義變量: 變量自定義 默認存儲是字符串
環境變量: 這種變量中主要保存的是和系統操作環境相關的數據。變量可以自定義,但是對系統生效的環境變量名和變量作用是固定的
位置參數變量: 這種變量主要是用來向腳本當中傳遞參數或數據的,變量名不能自定義,變量作用是固定的
預定義變量: 是bash中已經定義好的變量,變量名不能自定義,變量作用也是固定的
2.用戶自定義變量
1.定義變量
格式:變量名稱=變量值(=左右不能加空格)
例如:
x=5 就定義了一個叫 x 的變量
注意 5 是字符,不是數字,不能加減乘除。
name="hello world"
2.變量調用
在變量名之前加一個 $表示變量的值
例如:輸出變量的值
echo $x
echo $name
3.變量疊加
x=123
x="$x"456 或 x=${x}456
4.變量查看
set 會顯示當前系統中所有運行的變量
set -u 如果設定此選項,調用未聲明變量時會報錯(默認無任何提示)
5.刪除變量
unset 變量名
例如:unset name
3.bash環境變量
1.環境變量與用戶自定義變量的區別
環境變量是全局變量,用戶自定義變量是局部變量。
用戶自定義變量只在當前的 shell 中生效,環境變量在當前 shell 和這個 shell 的所有子 shell 中生效。
用戶可以自定義環境變量,但對系統生效的環境變量名和變量作用是固定的。
2.用戶自定義環境變量
export 變量名=變量值
或
變量名=變量值
export 變量名
3.查看環境變量
set 查看所有變量
env 查看環境變量
4.刪除環境變量
unset 環境名
5.常用的環境變量
HOSTNAME:主機名
SHELL:當前的 shell
TERM:終端環境
HISTSIZE:歷史命令條數
SSH_CLIENT:當前操作環境是用 ssh 連接的,這里記錄客戶端 ip
SSH_TTY:ssh 連接的終端是 pts/1
USER:當前登錄的用戶
PATH:系統搜索命令的路徑
要想直接通過腳本名執行自己的腳本:
(1)將腳本拷貝至 PATH 中的任意目錄下(不建議這樣做),例如:
cp hello.sh /bin/
(2)將腳本所在目錄添加到 PATH 變量中,例如:
PATH="$PATH":/root/sh 但系統重啟后失效(用的是變量疊加)
PS1:命令提示符設置
/d:顯示日期,格式為"星期 月 日"
/H:顯示完整的主機名
/t:顯示 24 小時制時間,格式為"HH:MM:SS"
/A:顯示 24 小時制時間,格式為"HH:MM"
/u:顯示當前用戶名
/w:顯示當前所在目錄的完整名稱
/W:顯示當前所在目錄的最后一個目錄
/$:提示符。root 用戶為"#",普通用戶為"$"
6:語系變量
環境變量中的語系變量
locale #查詢當前系統語系
LANG #定義系統主語系的變量
LC_ALL #定義整體語系的變量
echo $LANG #查看系統當前語系
locale -a | more
#查看linux支持的所有語系
查看默認語系
cat /etc/sysconfig/i18n
顯示:
LANG="zh_CN.UTF-8"
#表示開機默認就是中文語系UTF-8編碼
4.位置參數變量
1.位置參數變量
$n:n 為數字,$0 代表命令本身,$1-$9 代表第一到第九個參數,十以上的參數需要用大括號包含,如 ${10}。
$*:這個變量代表命令行中所有的參數,$* 把所有的參數看成一個整體。
$@:這個變量也代表命令行中所有的參數,不過 $@ 把每個參數區分對待。
$#:這個變量代表命令行中所有參數的個數。
2.例子1:
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
#變量 sum 的和是 num1 加 num2
echo $sum
#打印變量 sum 的值
執行腳本:
./test.sh 45 76
3.例子2
#!/bin/bash
echo "A total of $# parameters"
#使用 $# 代表所有參數的個數
echo "The parameters is:$*"
#使用 $* 代表所有的參數
echo "The parameters is:$@"
#使用 $@ 代表所有的參數
執行腳本:
./test.sh 11 22 33 44
4.例子3:$* 與 $@ 的區別
#!/bin/bash
for i in "$*"
# $* 中所有參數看成是一個整體,所以這個 for 循環只會循環一次
do
echo "The parameters is:$i"
done
for y in "$@"
# $@ 中每個參數都看成是獨立的,所以 $@ 中有幾個參數,就會循環幾次
do
echo "Parameter:$y"
done
5.預定義變量
預定義變量:
1.$?:最后一次執行的命令的返回狀態。
如果這個變量的值為0,證明上一個命令正確執行;
如果這個變量的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。
2.$$:當前進程的進程號(PID)。
3.$!:后臺最后一個運行的進程的進程號(PID)。
接收鍵盤輸入:
read [選項] [變量名]
選項:
-p "提示信息":在等待read輸入時,輸出提示信息
-t 秒數:read命令會一直等待用戶輸入,使用此選項可以指定等待時間
-n 字符數:read命令只接受指定的字符數,就會執行
-s:隱藏輸入的數據,適用于機密信息的輸入
read.sh:
#!/bin/bash
read -p "please input your name:" -t 30 name
echo $name
read -p "please input your passwd:" -s passwd
echo -e "/n"
echo $passwd
read -p "please input your sex [M/F]:" sex
echo -e "/n"
echo $sex
新聞熱點
疑難解答