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