最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本中變量的基本概念和使用方法介紹

 更新時(shí)間:2026年04月08日 09:38:00   作者:.Kaser.  
這篇文章主要為大家詳細(xì)介紹了Shell腳本中變量的基本概念和使用方法,文中通過大量示例演示了變量在Shell編程中的靈活運(yùn)用,并強(qiáng)調(diào)了變量命名規(guī)范等注意事項(xiàng),希望對(duì)大家有所幫助

變量:用于一個(gè)固定的字符串去表示不固定的內(nèi)容,便于修改。

1.自定義變量

用戶自定義變量是最常用的變量類型;

其特點(diǎn)是變量名和變量值都是有用戶自由定義的。

1.1 變量調(diào)用及注意事項(xiàng)

[root@shell-test ~]# name=kaser
[root@shell-test ~]# echo $name
kaser

變量名不能以數(shù)字開頭

[root@shell-test ~]# 2aaa=kkkkkk
bash: 2aaa=kkkkkk: command not found...

等號(hào)左右兩側(cè)不能有空格

[root@shell-test ~]# ccc = 123
bash: ccc: command not found...

變量值若有空格,必須使用引號(hào)包含

[root@shell-test ~]# bbb=ka ka
bash: ka: command not found...
[root@shell-test ~]# echo $bbb

[root@shell-test ~]# bbb="ka ka"
[root@shell-test ~]# echo $bbb
ka ka

1.2 重復(fù)定義變量

[root@shell-test ~]# cc=123
[root@shell-test ~]# echo $cc
123
[root@shell-test ~]# cc="$cc"456
[root@shell-test ~]# echo $cc
123456
[root@shell-test ~]# cc=${cc}789
[root@shell-test ~]# echo $cc
123456789

1.3 變量查看set及變量刪除unset

# set

[root@shell-test ~]# set | grep cc
cc=123456789
ccc='kaser 666'

# unset
[root@shell-test ~]# unset 變量名

1.4 變量注意事項(xiàng)

  • 變量名和等號(hào)之間不能有空格。
  • 變量名命名規(guī)則如下:
  • 命名只能使用英文字母,數(shù)字和下劃線,首個(gè)字符不能以數(shù)字開頭。
  • 中間不能有空格,可以使用下劃線(_)。
  • 不能使用標(biāo)點(diǎn)符號(hào)。
  • 不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)。
  • 起變量名,請(qǐng)使用五個(gè)字母以上。

1.5 示例:編寫“測(cè)試主機(jī)是否存活的腳本”?

1.5.1 不使用變量

[root@shell-test ~]# vim live_host-1.sh
ping -c1 172.25.254.44 &> /dev/null && echo "172.25.254.44 UpUpUp~" ||  echo "172.25.254.44 DownDownDown~"

[root@shell-test ~]# chmod +x live_host.sh
[root@shell-test ~]# ./live_host.sh
172.25.254.44 UpUpUp~

1.5.2 使用變量

[root@shell-test ~]# vim live_host-2.sh
#!/bin/bash
ip=172.25.254.44
ping -c1 $ip &> /dev/null && echo "$ip UpUpUp~" ||  echo "%ip DownDownDown~"

[root@shell-test ~]# chmod +x live_host-2.sh
[root@shell-test ~]# ./live_host-2.sh
172.25.254.44 UpUpUp~

1.5.3 變量+交互式

# 交互定義變量
read 從鍵盤讀入變量值
read 變量名
[root@shell-test ~]# vim live_host-3.sh
#!/bin/bash
read -p "請(qǐng)輸入測(cè)試主機(jī)IP地址:" ip
ping -c1 $ip &> /dev/null && echo "$ip UpUpUp~" ||  echo "$ip DownDownDown~"

[root@shell-test ~]# chmod +x live_host-3.sh
[root@shell-test ~]# ./live_host-3.sh
請(qǐng)輸入測(cè)試主機(jī)IP地址:172.25.254.44
172.25.254.44 UpUpUp~

2.整數(shù)運(yùn)算

2.1expr

+加,-減,*乘,/除,%取余

[root@shell-test ~]# expr 3 + 6
9

[root@shell-test ~]# num1=3
[root@shell-test ~]# num2=6

[root@shell-test ~]# expr $num1 + $num2
9
[root@shell-test ~]# expr $num1 - $num2
-3
[root@shell-test ~]# expr $num1 \* $num2
18
[root@shell-test ~]# expr $num1 / $num2
0
[root@shell-test ~]# expr $num1 % $num2
3

2.2$(())

[root@shell-test ~]# num1=2
[root@shell-test ~]# num2=4

[root@shell-test ~]# echo $((num1+num2))
6
[root@shell-test ~]# echo $(($num1+$num2))
6

2.3$[]

[root@shell-test ~]# echo $[3+2]
5
[root@shell-test ~]# echo $[3*2]
6
[root@shell-test ~]# echo $[3/2]
1
[root@shell-test ~]# echo $[3%2]
1

2.4let

[root@shell-test ~]# let a++;echo $a
1
[root@shell-test ~]# let a++;echo $a
2
[root@shell-test ~]# let a++;echo $a
3
[root@shell-test ~]# let a++;echo $a
4
[root@shell-test ~]# let a++;echo $a
5
[root@shell-test ~]# let a++;echo $a
6
[root@shell-test ~]# let a++;echo $a
7
[root@shell-test ~]# let a++;echo $a
8

3.小數(shù)運(yùn)算

bc:交互運(yùn)算器

[root@shell-test ~]# yum install -y bc

[root@shell-test ~]# echo "2+3" | bc
5
[root@shell-test ~]# echo "2*3" | bc
6
[root@shell-test ~]# echo "2%3" | bc
2
[root@shell-test ~]# echo "2/3" | bc
0
[root@shell-test ~]# echo "scale=3;10/3" | bc
3.333
[root@shell-test ~]# echo "scale=8;10/3" | bc
3.33333333

4.環(huán)境變量

自定義變量,只能再當(dāng)前shell生效。其他shell是不生效的。說白了,你的變量只能你用。那如果有些變量,需要所有的用戶都使用用。怎么辦呢?

定義環(huán)境變量

1.直接申明

[root@shell-test ~]# ppp=333
[root@shell-test ~]# echo $ppp
333
[root@shell-test ~]# echo $$
2139
[root@shell-test ~]# bash
[root@shell-test ~]# echo $ppp

[root@shell-test ~]# echo $$
2163


[root@shell-test ~]# export ppp=3
[root@shell-test ~]# echo $ppp
3
[root@shell-test ~]# echo $$
2139
[root@shell-test ~]# bash
[root@shell-test ~]# echo $$
2186
[root@shell-test ~]# echo $ppp
3

2.轉(zhuǎn)換環(huán)境變量

將自定義變量轉(zhuǎn)換到環(huán)境變量

  • ~/.bash_profile:當(dāng)前用戶
  • /etc/profile:所有用戶
# 直接申明,但是重新連接到ssh則會(huì)發(fā)現(xiàn)我們申明的環(huán)境變量消失了
[root@shell-test ~]# export kkk=123123123
[root@shell-test ~]# echo $kkk
123123123
[root@shell-test ~]# bash
[root@shell-test ~]# echo $kkk
123123123
[root@shell-test ~]# bash
[root@shell-test ~]# echo $kkk
123123123

[root@shell-test ~]# ssh 172.25.254.44
[root@shell-test ~]# echo $kkk

1.~/.bash_profile

[root@shell-test ~]# echo "export xx=0000" >> .bash_profile
[root@shell-test ~]# source .bash_profile
[root@shell-test ~]# echo $xx
0000
[root@shell-test ~]# bash
[root@shell-test ~]#
[root@shell-test ~]# echo $xx
0000
[root@shell-test ~]# useradd kaser
[root@shell-test ~]# su - kaser
[kaser@shell-test ~]$ echo $xx

[kaser@shell-test ~]$

2./etc/profile

[root@shell-test ~]# echo "export ggg=444" >> /etc/profile
[root@shell-test ~]# source /etc/profile

[root@shell-test ~]# echo $ggg
444

[root@shell-test ~]# bash
[root@shell-test ~]# echo $ggg
444

[root@shell-test ~]# su - kaser
[kaser@shell-test ~]$ echo $ggg
444

5.預(yù)定義變量

5.1 與參數(shù)相關(guān)的變量

$0	# 當(dāng)前腳本名稱
$1 $2 $3 ... $x	 # 位置參數(shù)
$#	# 參數(shù)總數(shù)
$* $@  # 所有位置參數(shù)

5.2 與執(zhí)行狀態(tài)相關(guān)的變量

$?	# 上個(gè)命令退出的狀態(tài)碼
$$	# 當(dāng)前Shell進(jìn)程ID(PID)
$!	# 最后一個(gè)后臺(tái)運(yùn)行進(jìn)程的進(jìn)程ID(PID)

5.3 與環(huán)境及輸入相關(guān)的變量

$-	# 當(dāng)前Shell的選項(xiàng)標(biāo)志
$_	# 上一個(gè)命令的最后一個(gè)參數(shù)
$IFS  # 內(nèi)部字段分隔符

5.4 示例

[root@shell-test ~]# vim test-2.sh
#!/bin/bash
echo "腳本名稱: $0"
echo "第一個(gè)參數(shù): $1"
echo "第二個(gè)參數(shù): $2"
echo "參數(shù)總數(shù): $#"
echo "所有參數(shù)(*): $*"
echo "所有參數(shù)(@): $@"

# 模擬一個(gè)命令并檢查返回值
ls -l /mnt
echo "上一個(gè)命令的退出狀態(tài): $?"

ls -l /non_existent_directory
echo "上一個(gè)命令的退出狀態(tài): $?"

echo "當(dāng)前進(jìn)程ID: $$"

# 后臺(tái)運(yùn)行示例
sleep 100 &
echo "后臺(tái)進(jìn)程ID: $!"

echo "上一個(gè)命令的最后一個(gè)參數(shù): $_"
# 注意:在這里 $_ 將是 "$!" 的值,因?yàn)槟鞘巧弦粋€(gè)命令(echo)的最后一個(gè)參數(shù)
[root@shell-test ~]# chmod +x test-2.sh
[root@shell-test ~]# ./test-2.sh 3 5
腳本名稱: ./test-2.sh
第一個(gè)參數(shù): 3
第二個(gè)參數(shù): 5
參數(shù)總數(shù): 2
所有參數(shù)(*): 3 5
所有參數(shù)(@): 3 5
total 0
drwxr-xr-x. 2 root root 6 Nov  4 10:34 hgfs
上一個(gè)命令的退出狀態(tài): 0
ls: cannot access '/non_existent_directory': No such file or directory
上一個(gè)命令的退出狀態(tài): 2
當(dāng)前進(jìn)程ID: 4099
后臺(tái)進(jìn)程ID: 4102
上一個(gè)命令的最后一個(gè)參數(shù): 后臺(tái)進(jìn)程ID: 4102

5.5 測(cè)試

5.5.1 編寫自動(dòng)創(chuàng)建用戶并設(shè)置初始密碼的簡易腳本

[root@shell-test ~]# vim new_user_passwd.sh
#!/bin/bash
read -p "新建用戶名(name)=" name
read -sp "新建密碼(passwd)=" passwd
echo
useradd $name
echo "$passwd" | passwd --stdin $name > /dev/null
echo "$name已經(jīng)被創(chuàng)建,密碼為$passwd,為賬號(hào)安全,請(qǐng)勿外傳!"

[root@shell-test ~]# chmod +x new_user_passwd.sh
[root@shell-test ~]# ./new_user_passwd.sh
新建用戶名(name)=kkk
新建密碼(passwd)=
kkk已經(jīng)被創(chuàng)建,密碼為123,為賬號(hào)安全,請(qǐng)勿外傳!

5.5.2 編寫自動(dòng)配置本地軟件源的簡易腳本

[root@shell-test ~]# vim auto_mount_yum.sh
#!/bin/bash
echo "這是一個(gè)自動(dòng)配置本地軟件倉庫的腳本(開機(jī)自動(dòng)掛載)!"
echo "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
echo
echo
mkdir /local
echo "已創(chuàng)建/local,將/dev/sr0掛載至此。"
mount /dev/sr0 /local
mount /dev/sr0 /local >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
echo "已完成開機(jī)自動(dòng)掛載!"
echo
cat <<EOF > /etc/yum.repos.d/local.repo
[AppStream]
name=AppStream
baseurl=file:///local/AppStream

[BaseOS]
name=BaseOS
baseurl=file:///local/BaseOS
EOF

yum clean all && yum makecache
echo "元數(shù)據(jù)已緩存至本地,開始使用吧!"

以上就是Shell腳本中變量的基本概念和使用方法介紹的詳細(xì)內(nèi)容,更多關(guān)于Shell腳本變量使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Shell腳本如何啟動(dòng)/停止Java的jar程序

    使用Shell腳本如何啟動(dòng)/停止Java的jar程序

    這篇文章主要介紹了使用Shell腳本如何啟動(dòng)/停止Java的jar程序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Shell中printf和test命令的實(shí)際應(yīng)用詳解

    Shell中printf和test命令的實(shí)際應(yīng)用詳解

    本文主要介紹了Shell中printf和test命令的實(shí)際應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Shell腳本數(shù)組用法小結(jié)

    Shell腳本數(shù)組用法小結(jié)

    這篇文章主要介紹了Shell腳本數(shù)組用法小結(jié),本文講解了數(shù)組聲明、數(shù)組遍歷、獲取數(shù)組長度、刪除數(shù)組元素、數(shù)組切片等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • 在Shell腳本中調(diào)用另一個(gè)腳本的三種方式講解

    在Shell腳本中調(diào)用另一個(gè)腳本的三種方式講解

    今天小編就為大家分享一篇關(guān)于在Shell腳本中調(diào)用另一個(gè)腳本的三種方式講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • scp命令詳解(全)

    scp命令詳解(全)

    這篇文章主要介紹了scp命令,scp如何做遠(yuǎn)程拷貝,下面小編幫助大家解決有關(guān)scp命令相關(guān)知識(shí),需要的朋友可以參考下
    2015-08-08
  • Linux bash Shell中的變量類型詳解

    Linux bash Shell中的變量類型詳解

    這篇文章主要介紹了Linux bash Shell中的變量類型詳解,變量類型共分為本地變量、局部變量、環(huán)境變量、位置變量和特殊變量等,需要的朋友可以參考下
    2015-06-06
  • linux中nohup和后臺(tái)運(yùn)行進(jìn)程查看及終止

    linux中nohup和后臺(tái)運(yùn)行進(jìn)程查看及終止

    今天給大家介紹linux中nohup和后臺(tái)運(yùn)行進(jìn)程查看及終止的操作命令,大家都知道nohup用于不掛斷地運(yùn)行命令,語法也很簡單,需要的朋友可以參考下本文吧
    2021-06-06
  • Linux中的head與tail命令及用法詳解

    Linux中的head與tail命令及用法詳解

    Linux中head與tail命令用于查看文件開頭/結(jié)尾內(nèi)容,支持指定行數(shù)、字節(jié)數(shù)及實(shí)時(shí)跟蹤日志,head默認(rèn)顯示前10行,tail默認(rèn)后10行,常用于運(yùn)維日志分析,需注意權(quán)限與資源占用問題,本文給大家介紹Linux中的head與tail命令及用法,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • shell grep 查找進(jìn)程的小技巧

    shell grep 查找進(jìn)程的小技巧

    大部分人在寫Shell 過濾進(jìn)程的時(shí)候 都會(huì)使用 grep 在 ps aux 的輸出結(jié)果中查找指定的進(jìn)程,但此時(shí)也會(huì)把 grep 進(jìn)程也顯示出來
    2013-01-01
  • shell 腳本中獲取命令的輸出的實(shí)現(xiàn)示例

    shell 腳本中獲取命令的輸出的實(shí)現(xiàn)示例

    本文主要介紹了shell 腳本中獲取命令的輸出的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

姚安县| 团风县| 麻江县| 兴安县| 江口县| 武宣县| 麦盖提县| 安康市| 原阳县| 新泰市| 道真| 左云县| 西宁市| 朝阳县| 育儿| 两当县| 中山市| 汉源县| 石首市| 农安县| 台北市| 仙桃市| 宁南县| 达孜县| 界首市| 荔波县| 雷波县| 永安市| 庆云县| 五指山市| 昭觉县| 荥经县| 巴彦淖尔市| 铁岭县| 嵊泗县| 丹江口市| 鱼台县| 大安市| 宿松县| 磴口县| 商都县|