日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Shell特殊變量

狀態(tài)變量

變量 含義 應(yīng)用場(chǎng)景
$? 上一條命令的返回值 判斷命令的執(zhí)行是否成功
$$ 用于獲取當(dāng)前shell環(huán)境的進(jìn)程ID號(hào) 在腳本運(yùn)行時(shí)將pid記錄到文件中,方便kill
$! 記錄上一個(gè)腳本運(yùn)行的pid,很少用  
$_ 上一個(gè)命令或者腳本的最后一個(gè)參數(shù) 類似于ESC + .

 

$?:用來(lái)獲取上一個(gè)命令或函數(shù)的返回值。 (通過(guò)返回值,可以進(jìn)行判斷)

##通常命令執(zhí)行成功返回0,失敗返回值為其他數(shù)字,比如[root@m01 ~]# cat 1.txtcat: 1.txt: No such file or directory[root@m01 ~]# echo $?1
[root@m01 ~]# ll hvbjhjls: cannot access hvbjhj: No such file or directory[root@m01 ~]# echo $?2         因?yàn)閘s程序里寫(xiě)了返回值是2
#例:檢查域名能否ping通[root@m01 ~]# vim 1.sh#!/bin/bashping -c 1 -w 2 -i 0.1 www.bAIdu.com &>/dev/nullecho $?[root@m01 ~]# sh 1.sh0
##注意:并不是所有命令執(zhí)行成功都返回0,所以我們?cè)谧雠袛嘀埃欢ㄒ诿钚袌?zhí)行一遍,確認(rèn)一下。例如[root@localhost ~]# echo 111 > 1.txt[root@localhost ~]# echo 111 > 2.txt[root@localhost ~]# diff 1.txt 2.txt[root@localhost ~]# echo $?   //文件相同時(shí)返回00
[root@localhost ~]# echo 222 > 2.txt[root@localhost ~]# diff 1.txt 2.txt1c1< 111---> 222[root@localhost ~]# echo $? //文件不同時(shí)返回11

 

$$:可以記錄當(dāng)前腳本運(yùn)行的pid號(hào),方便kill

# 例1:獲取當(dāng)前shell環(huán)境的進(jìn)程ID號(hào)[root@m01 ~]# echo $$37736[root@m01 ~]# pstree -p|grep bash          |-sshd(8565)-+-sshd(20719)---bash(20721)          |           |-sshd(21865)---bash(21867)          |           |-sshd(23197)---bash(23199)          |           |-sshd(37734)---bash(37736)-+-grep(38195)
...
# 例2:記錄當(dāng)前腳本運(yùn)行的pid號(hào)[root@m01 ~]# vim 1.sh#!/bin/bashecho $$sleep 10[root@m01 ~]# sh 1.sh37817[root@m01 ~]# ps -ef|grep 1.shroot      37817  37736  0 22:38 pts/3    00:00:00 sh 1.sh

# 例3:5秒備份一次的腳本,定時(shí)任務(wù)滿足不了#!/bin/bashecho $$ > /var/run/backup.pid     #//記錄pid號(hào)到/var/run/下while true;do echo '備份中...' cp /etc/passwd /tmp/passwd_$(date +%F-%T) sleep 5done
[root@m01 ~]# sh 1.sh備份中...備份中...備份中...備份中...備份中...
[root@m01 /tmp]# lltotal 540-rw-r--r-- 1 root root 1470 Nov  7 23:08 passwd_2023-11-07-23:08:10-rw-r--r-- 1 root root 1470 Nov  7 23:08 passwd_2023-11-07-23:08:15-rw-r--r-- 1 root root 1470 Nov  7 23:08 passwd_2023-11-07-23:08:20-rw-r--r-- 1 root root 1470 Nov  7 23:08 passwd_2023-11-07-23:08:25...

 

$_

$_:和ESC+.一個(gè)效果。記錄上一條命令,以空格為分隔符的最后一部分內(nèi)容。
[root@localhost ~]# ll /etc/passwd-rw-r--r--. 1 root root 906 Oct  9 15:30 /etc/passwd[root@localhost ~]# /etc/passwd   (此處按ESC+.便出來(lái)上條的后半部分)

 

位置變量

符號(hào) 含義 應(yīng)用場(chǎng)景
$0 腳本名字 腳本錯(cuò)誤提示或者提示幫助時(shí)
$n 腳本的第n個(gè)參數(shù) 傳參給腳本,在腳本中使用
$# 統(tǒng)計(jì)腳本參數(shù)的個(gè)數(shù) 判斷腳本傳參個(gè)數(shù)
$* 接收腳本后所有的參數(shù) 將所有參數(shù)當(dāng)成是一個(gè)整體,對(duì)傳遞的參數(shù)進(jìn)行判斷
$@ 接收腳本后所有的參數(shù) 將所有參數(shù)當(dāng)成是一個(gè)整體,對(duì)傳遞的參數(shù)進(jìn)行判斷

 

$0

# 腳本的幫助/錯(cuò)誤提示[root@m01 ~]# /etc/init.d.NETwork     //這個(gè)是network的啟動(dòng)腳本Usage: /etc/init.d/network {start|stop|status|restart|force-reload}[root@m01 ~]# /etc/init.d/network startStarting network (via systemctl):                         [ OK ]
# 自己實(shí)現(xiàn)腳本的幫助/錯(cuò)誤提示[root@m01 ~]# vim 1.sh#!/bin/bashecho $0[root@m01 ~]# sh 1.sh1.sh
[root@m01 ~]# vim 1.sh#!/bin/bashecho "Usage: $0 {start|stop|status|restart|force-reload}"[root@m01 ~]# sh 1.shUsage: 1.sh {start|stop|status|restart|force-reload}
# 腳本完善,使用$#vim usage.sh#!/bin/bashif [ $# -eq 0 ];then echo "Usage: $0 {start|stop|restart}"else echo $1fi
[root@m01 ~]# sh usage.shUsage: usage.sh {start|stop|restart}[root@m01 ~]# sh usage.sh startstart

 

$n:用于給腳本傳參

# 運(yùn)行 Shell 腳本文件時(shí)我們可以給它傳遞一些參數(shù),這些參數(shù)在腳本文件內(nèi)部可以使用$n的形式來(lái)接收。第n個(gè)參數(shù),用$n接收
# 例[root@m01 ~]# vim 1.sh#!/bin/bashecho $1 $2 $3 $4 $5
[root@m01 ~]# sh 1.sh 1 2 3 4 51 2 3 4 5[root@m01 ~]# sh 1.sh {1..6}1 2 3 4 5[root@m01 ~]# sh 1.sh {a..h}a b c d e
# $10 以后,需要加{}[root@m01 ~]# vim 1.sh#!/bin/bashecho $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11
[root@m01 ~]# sh 1.sh {a..l}a b c d e f g h i a0 a1[root@m01 ~]# sh 1.sh {1..11}1 2 3 4 5 6 7 8 9 10 11
[root@m01 ~]# vim 1.sh#!/bin/bashecho $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11}[root@m01 ~]# sh 1.sh {a..l}a b c d e f g h i j k

 

$#:統(tǒng)計(jì)腳本傳遞了幾個(gè)參數(shù),讓腳本更嚴(yán)謹(jǐn)

# 例#!/bin/bashnum1=$1num2=$2echo $num1echo $num2echo $#
[root@m01 ~]# sh 1.sh 1 2 3 4124

 

$*和$@

$*和$@:接收腳本后面?zhèn)鬟f的所有參數(shù)。主要用于當(dāng)傳遞參數(shù)較多的情況。正常情況下,這兩個(gè)變量是沒(méi)有區(qū)別的。用循環(huán)的時(shí)候才和$@區(qū)別
# 例子#!/bin/bashecho $@echo $#[root@m01 ~]# sh 1.sh {a..z}a b c d e f g h i j k l m n o p q r s t u v w x y z26
#!/bin/bashecho $@echo $*echo $#[root@m01 ~]# sh 1.sh {a..z}a b c d e f g h i j k l m n o p q r s t u v w x y za b c d e f g h i j k l m n o p q r s t u v w x y z26
## 兩者區(qū)別:用for循環(huán)時(shí)$*加了引號(hào)變橫排,僅此而已[root@m01 ~]# vim 4.sh#!/bin/bashecho '$@輸出結(jié)果如下:'for num1 in "$@";do echo $num1done
echo '$*輸出結(jié)果如下:'for num2 in "$*";do     echo $num2done
[root@m01 ~]# sh 4.sh 1 2 3 4 5$@輸出結(jié)果如下:12345$*輸出結(jié)果如下:1 2 3 4 5

分享到:
標(biāo)簽:Shell
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定