精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Shell 腳本中常用的內置變量 你知道嗎?

系統 Linux
在 Bash 解釋器中,內置了許多變量,這些變量的功能是解釋器自帶的,我們在編寫shell腳本時如果能靈活的使用它們,對腳本的編寫效率以及差錯大有幫助, 下面一一介紹這些變量。

 [[354150]]

本文轉載自微信公眾號「Linux開發那些事兒」,作者LinuxThings。轉載本文請聯系Linux開發那些事兒公眾號。  

在 Bash 解釋器中,內置了許多變量,這些變量的功能是解釋器自帶的,我們在編寫shell腳本時如果能靈活的使用它們,對腳本的編寫效率以及差錯大有幫助, 下面一一介紹這些變量

$FUNCNAME、$LINENO、$PWD

FUNCNAME和LINENO 變量經常用于腳本的調試

FUNCNAME 表示當前函數的名字,作用范圍僅限函數中使用,在函數外無值

LINENO 表示當前所在腳本中變量出現在的行號

PWD 表示當前目錄, 對應于 pwd命令

現有個腳本 a.sh 內容如下

  1. 1 #!/bin/bash 
  2.  2 
  3.  3  
  4.  4 testa() 
  5.  5 { 
  6.  6  echo 'func='$FUNCNAME,$LINENO 
  7.  7 } 
  8.  8  
  9.  9  
  10. 10 testa 
  11. 11  
  12. 12 echo 'lineno:'$LINENO 
  13. 13 echo 'xx:'$FUNCNAME 
  14. 14 echo 'curpath:'$PWD 

執行 ./a.sh 命令, 輸出如下

  1. [tt@ecs-centos-7 ~]$ ./a.sh  
  2. func=testa,6 
  3. lineno:12 
  4. xx: 
  5. curpath:/home/tt 

在 testa 函數中 FUNCNAME 變量值是 testa,也即函數名字,在函數外部無值

LINENO 變量無論是在函數中還是函數外,都表示當前所在的行號

$$、$PPID

這兩個變量依次表示當前進程ID和父進程ID

現有 a.sh 腳本,內容如下

sleep 20 睡眠語句是為了讓執行腳本進程暫緩退出,在另一個終端中驗證輸出的結果

  1. #!/bin/bash 
  2. #set -u 
  3.  
  4. echo 'cur pid:'$$ 
  5. echo 'parent pid:'$PPID 
  6. sleep 20 

在當前終端執行 ./a.sh,結果如下

  1. [tt@ecs-centos-7 ~]$ ./a.sh  
  2. cur pid:13095 
  3. parent pid:12982 

在執行a.sh的腳本進程退出之前,打開另一個終端,執行 ps -o pid,ppid,time,cmd -p 12982,13095 命令,結果如下

  1. [tt@ecs-centos-7 ~]$ ps -o pid,ppid,time,cmd -p 12982,13095 
  2.   PID  PPID     TIME CMD 
  3. 12982 12981 00:00:00 -bash 
  4. 13095 12982 00:00:00 /bin/bash ./a.sh 

從上面的結果可以看出, 執行 ./a.sh 命令之后,$$ 變量表示的是 執行a.sh腳本的進程ID 13095 ,而 12982 是它的父進程ID,也即是 PPID變量的值,它是當前bash的實例

$0,$1,$2...$n、$#

$# 表示從命令行傳入腳本的參數數量

$0,$1,$2...$n 是從命令行傳遞到腳本的參數 $0 是腳本本身的名字 $1 是第一個參數 $2 是第二個參數,依此類推 $n 是第n個參數

第十個參數及以后的參數必須要用大括號括起來,例如: ${10}、${11}、${12} 依次表示第十個變量、第十一個變量、第十二個變量

$*、$@

都表示位置參數,不過它們之間也有些不同點

使用 $* 時,如果加上雙引號,即 "$* " 的形式,那所有位置的參數會被當作一個單詞來處理,如果不包含雙引號,即 $* 的形式,則每個位置的參數都被當作一個獨立的單詞來處理

而對于 $@,無論是否加上雙引號,每個位置的參數都被當作一個獨立的單詞來處理

現有c.sh, 內容如下

  1. #!/bin/bash 
  2.  
  3. cnt=1 
  4. echo 'test 1111' 
  5.  
  6. for var in "$*" 
  7. do 
  8.    echo "arg$cnt="$var 
  9.    let "cnt+=1" 
  10. done 
  11. echo 
  12.  
  13. cnt=1 
  14. echo 'test 2222' 
  15. for var in $* 
  16. do 
  17.   echo "arg$cnt="$var 
  18.   let "cnt+=1" 
  19. done 
  20. echo 
  21.  
  22. cnt=1 
  23. echo 'test 3333' 
  24. for var in "$@" 
  25. do 
  26.   echo "arg$cnt="$var 
  27.   let "cnt+=1" 
  28. done 
  29. echo 
  30.  
  31. cnt=1 
  32. echo "test 4444" 
  33. for var in $@ 
  34. do 
  35.  echo "arg$cnt="$var 
  36.  let "cnt+=1" 
  37. done 

執行 ./c.sh 1 2 3,結果如下

  1. [root@ecs-centos-7 ~]# ./c.sh 1 2 3 
  2. test 1111 
  3. arg1=1 2 3 
  4.  
  5. test 2222 
  6. arg1=1 
  7. arg2=2 
  8. arg3=3 
  9.  
  10. test 3333 
  11. arg1=1 
  12. arg2=2 
  13. arg3=3 
  14.  
  15. test 4444 
  16. arg1=1 
  17. arg2=2 
  18. arg3=3 

從上面的結果可以看出,對于 $* 來說,加了雙引號之后所有位置參數就會被視為一個單詞

對于 $@ 來說,是否加雙引號,結果都是一樣的

所以,僅在使用雙引號時,$*和 $@ 才會有差異

$?

命令、函數或者腳本的退出狀態,在判斷命令的執行結果或者函數的調用結果時很有用處

現有 e.sh 和 f.sh 測試腳本

e.sh 腳本

  1. #!/bin/bash 
  2.  
  3. test_func() 
  4.   if [[ $1 -eq 10 ]]; then 
  5.         return 5 
  6.   fi 
  7.   return 6 
  8.  
  9.  
  10. if [ $# -ge 1 ]; then 
  11.    name="$1" 
  12.    shift 1 
  13.    $name "$@" 
  14. fi 

f.sh 腳本

  1. #!/bin/bash 
  2.  
  3.  
  4. sh e.sh test_func 3 
  5. echo 'exit code1:'$? 
  6.  
  7. sh e.sh test_func 10 
  8. echo 'exit code2:'$? 
  9.  
  10. test -f $PWD/xx.txt 
  11. echo 'exit code3:'$? 
  12.  
  13. test -f $PWD/e.sh 
  14. echo 'exit code4:'$? 

執行 ./f.sh 命令,結果如下

  1. [root@ecs-centos-7 ~]# ./f.sh  
  2. exit code1:6 
  3. exit code2:5 
  4. exit code3:1 
  5. exit code4:0 

腳本 e.sh 中 test_func 函數功能是:當參數等于10時,退出狀態為 5,否則為 6

sh e.sh test_func 3 命令會調用 e.sh 腳本中的 test_func函數,傳入參數是 3,所以退出狀態為 6,同理可知, sh e.sh test_func 10 命令的退出狀態是 5

在Linux中,命令執行成功,退出狀態為 0 ,失敗則為非 0

test -f $PWD/xx.txt 命令是檢查當前目錄是否存在 xx.txt 文件,因當前目錄并不存在 xx.txt,所以命令執行失敗,退出狀態為非 0

由于e.sh 存在于當前目錄下,所以 test -f $PWD/e.sh 命令執行成功,退出狀態為 0

$IFS

此變量用于 Bash 識別字符串或單詞邊界,默認值是空格,腳本中根據需要可以修改此變量的值

現有 b.sh腳本,內容如下

  1. #!/bin/bash 
  2.  
  3. va="a:b:c" 
  4. vb="x-y-z" 
  5. vc="e,f,g" 
  6.  
  7. IFS=":" 
  8. echo 'va:'$va 
  9. echo 'vb:'$vb 
  10. echo 'vc:'$vc 
  11.  
  12. echo 
  13.  
  14. IFS="-" 
  15. echo 'va:'$va 
  16. echo 'vb:'$vb 
  17. echo 'vc:'$vc 
  18.  
  19. echo 
  20.  
  21. IFS="," 
  22. echo 'va:'$va 
  23. echo 'vb:'$vb 
  24. echo 'vc:'$vc 

執行 ./b.sh 結果如下

  1. [tt@ecs-centos-7 ~]$ ./b.sh  
  2. va:a b c 
  3. vb:x-y-z 
  4. vc:e,f,g 
  5.  
  6. va:a:b:c 
  7. vb:x y z 
  8. vc:e,f,g 
  9.  
  10. va:a:b:c 
  11. vb:x-y-z 
  12. vc:e f g 

從結果可以看出,當 $IFS 為 : 時,字符串 "a:b:c"被解析成 a b c

當 $IFS 為 - 時,字符串 "x-y-z"被解析成 x y z

當 $IFS 為 , 時,字符串 "e,f,g"被解析成 e f g

$HOME、$USER、$UID、$GROUPS

  1. HOME:   用戶home目錄 
  2. USER:   當前用戶名 
  3. UID:    當前用戶ID 
  4. GROUPS: 當前用戶組ID 
  1. [tt@ecs-centos-7 ~]$ echo $HOME 
  2. /home/tt 
  3. [tt@ecs-centos-7 ~]$ echo $USER 
  4. tt 
  5. [tt@ecs-centos-7 ~]$ echo $UID 
  6. 1003 
  7. [tt@ecs-centos-7 ~]$ echo $GROUPS 
  8. 1003 

$HOSTTYPE、$MACTYPE、$OSTYPE

這些變量都表示系統硬件

  1. [tt@ecs-centos-7 ~]$ echo $HOSTTYPE 
  2. x86_64 
  3. [tt@ecs-centos-7 ~]$ echo $MACHTYPE 
  4. x86_64-redhat-linux-gnu 
  5. [tt@ecs-centos-7 ~]$ echo $OSTYPE 
  6. linux-gnu 

小結

本文介紹了一些常用的 Bash 內置變量,對于一些生僻或者平常很少用到的變量可以自行查閱相關資料

 

責任編輯:武曉燕 來源: Linux開發那些事兒
相關推薦

2024-06-12 08:05:06

2022-03-10 08:25:27

JavaScrip變量作用域

2020-10-08 18:58:46

條件變量開發線程

2024-02-19 00:00:00

Console函數鏈接庫

2020-12-24 15:26:07

Redis數據庫

2021-09-13 19:28:42

JavaNetty開發

2023-12-12 08:41:01

2018-09-07 15:23:16

2024-11-01 10:48:01

C#WPF程序

2022-09-29 15:32:58

云計算計算模式

2024-09-18 07:00:00

消息隊列中間件消息隊列

2021-10-14 06:52:47

算法校驗碼結構

2019-12-12 09:23:29

Hello World操作系統函數庫

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2024-04-30 09:02:48

2023-04-26 10:21:04

2023-12-20 08:23:53

NIO組件非阻塞

2010-03-26 15:28:05

Python編寫

2024-12-04 08:40:19

點贊
收藏

51CTO技術棧公眾號

精品国产乱码久久久久久蜜臀 | 在线国产欧美| 亚洲成人激情图| 男人天堂999| 日本中文字幕在线观看| 国产一二精品视频| 97在线免费观看视频| 99精品欧美一区二区| 美女精品视频在线| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲欧美日本国产有色| 蜜臀av在线观看| 久久66热偷产精品| 欧美一级在线播放| 老湿机69福利| 国产亚洲欧美日韩在线观看一区二区| 欧美丰满一区二区免费视频 | 免费在线成人av电影| 91成品人影院| 久久精品1区| 色综合久久久久久中文网| 中字幕一区二区三区乱码| 一区二区三区四区精品视频 | 国内揄拍国内精品| 五月婷婷综合激情网| 一区三区在线欧| 欧美成人乱码一区二区三区| 在线观看免费黄网站| 1234区中文字幕在线观看| 中文字幕制服丝袜成人av| 久久青青草原| 天堂av资源在线| 国产成人免费视频网站| 91精品啪aⅴ在线观看国产| 国产黄网在线观看| 亚洲一区免费| 久久久久中文字幕2018| 中国毛片直接看| 日韩一区三区| 一区二区福利视频| 素人fc2av清纯18岁| eeuss鲁片一区二区三区| 91精品国产一区二区| 五月婷婷六月丁香激情| 男人皇宫亚洲男人2020| 色综合咪咪久久| 精品这里只有精品| 成入视频在线观看| 亚洲成av人片在www色猫咪| 99久久99久久精品| 国产在线激情| 亚洲免费视频中文字幕| 亚洲国产精品女人| av观看在线| 亚洲激情一二三区| 久久久久久久久久伊人| www免费在线观看| 亚洲精品菠萝久久久久久久| 超级碰在线观看| 久久电影网站| 姬川优奈aav一区二区| 免费看一级大黄情大片| 亚洲天堂电影| 在线视频亚洲一区| 污视频免费在线观看网站| 免费成人黄色网| 欧美精品丝袜久久久中文字幕| 色戒在线免费观看| 国产日韩一区二区三免费高清| 91精品国产综合久久久久久久久久 | 亚洲精品乱码| 日韩av色在线| 中文字字幕在线观看| 精品亚洲国产成人av制服丝袜| 亚洲一区二区少妇| 亚洲精品喷潮一区二区三区| av在线一区二区| 日韩av一区二区三区在线观看| 午夜视频在线| 一区二区三区在线观看欧美| 尤物av无码色av无码| 91精品韩国| 6080亚洲精品一区二区| 国产a级黄色片| 精品理论电影| 欧美成人精品激情在线观看| 日韩欧美亚洲视频| 日本不卡视频在线| 国产成人看片| 岛国视频免费在线观看| 亚洲丝袜美腿综合| 免费成人午夜视频| av在线国产精品| 亚洲激情视频在线播放| 精品一区二区三区蜜桃在线| 欧美日本中文| 国产a∨精品一区二区三区不卡| 一区二区三区黄| eeuss鲁片一区二区三区在线观看| 日日夜夜精品网站| 搞黄网站在线看| 欧美日韩国产精品成人| 国产视频久久久久久| 日韩欧美一区二区三区在线视频 | 亚洲激情久久久| 天天操天天摸天天舔| 国产午夜精品一区二区三区欧美| 成人av资源在线播放| 欧美高清电影在线| 亚洲国产一区二区在线播放| mm131国产精品| 欧美三级午夜理伦三级在线观看 | 免费国产一区二区| 污污的网站在线免费观看| 在线观看视频一区| 精品视频站长推荐| 91精品电影| 国产精品私拍pans大尺度在线| 欧美一级片免费| 亚洲欧美一区二区视频| 成年人黄色片视频| 精品淫伦v久久水蜜桃| 久久国产精品99国产精| 久久久久精彩视频| 97成人超碰视| 免费超爽大片黄| 美女国产精品久久久| 日韩亚洲一区二区| 国产一级片一区二区| 99在线精品视频| 国产精品一色哟哟| 九九99久久精品在免费线bt| 色综合亚洲精品激情狠狠| 日本免费在线观看视频| 99精品国产一区二区三区不卡| 青草全福视在线| 91成人短视频在线观看| 中文字幕av日韩| 91黑人精品一区二区三区| 26uuu另类欧美| 国产精品无码av在线播放| 伊人久久影院| 欧美激情免费在线| 亚洲av综合色区无码一二三区| 亚洲乱码国产乱码精品精的特点| www.精品在线| 久久中文视频| 成人a在线观看| 免费av在线网站| 欧美精品一卡两卡| av最新在线观看| 激情伊人五月天久久综合| 伊人久久大香线蕉综合75| 成人在线免费| 精品国产欧美一区二区五十路| 中文字幕777| 国产丝袜欧美中文另类| 亚洲福利精品视频| 91综合视频| 91在线无精精品一区二区| 日韩视频第一页| 一区二区在线观看网站| 免费成人黄色网| 久久天堂av综合合色| 99久久久国产精品无码网爆| 亚洲精品ww久久久久久p站| 亚洲国产精品第一页| 亚洲精品专区| 欧美三级网色| 欧美成人黄色| 久久99久久99精品中文字幕| 五月天婷婷在线播放| 91久久精品一区二区三区| 亚洲最大成人综合网| 激情五月激情综合网| 日韩视频在线视频| 欧美一级精品片在线看| 2019国产精品视频| 黄视频网站在线观看| 亚洲性生活视频在线观看| 国产又粗又猛视频| 亚洲成av人**亚洲成av**| 欧美熟妇一区二区| 狠狠色丁香久久婷婷综合_中| av无码久久久久久不卡网站| 精品视频亚洲| 91原创国产| 欧美色999| 欧美精品在线第一页| 视频二区在线| 在线播放一区二区三区| 日本一区二区网站| 国产精品天天摸av网| 在线观看你懂的视频| 日韩精品一二三四| 国产天堂视频在线观看| 欧美午夜精品一区二区三区电影| 成人亚洲欧美一区二区三区| 色戒汤唯在线观看| 久久精品一本久久99精品| 天天干天天爽天天操| 欧美裸体bbwbbwbbw| 久久午夜免费视频| 亚洲视频中文字幕| 性欧美一区二区| 成人午夜激情视频| 一区二区久久精品| 久久一日本道色综合久久| 欧美一区二区视频在线播放| 欧美限制电影| 久久综合给合久久狠狠色| 欧美午夜网站| 国产精自产拍久久久久久| 高端美女服务在线视频播放| 麻豆成人在线看| av色图一区| 亚洲免费电影在线观看| 蜜臀av在线观看| 91精品国产色综合久久| av首页在线观看| 欧美日韩免费一区| 国产香蕉在线视频| 亚洲欧美视频在线观看视频| 性少妇xx生活| 欧美激情一区二区三区不卡| 一级特黄a大片免费| 国产suv精品一区二区883| 激情图片中文字幕| 久久精品国内一区二区三区| 国产精品igao| 久久婷婷久久| 777米奇影视第四色| 99国产精品视频免费观看一公开| 成人国产一区二区三区| 伊人久久大香线| 久久久成人精品一区二区三区| 欧美先锋资源| 亚洲欧洲久久| 久久五月天小说| 亚洲精品国产精品国自产观看| 精品国产一区二区三区av片| 久久综合中文色婷婷| 日本在线中文字幕一区| 精品国产一区二区三区免费| 美国成人xxx| 精品亚洲第一| 亚瑟一区二区三区四区| 久久国产一区| 夜色77av精品影院| 日韩.欧美.亚洲| 欧美三级伦理在线| 一区国产精品| 欧美伊人影院| 青草视频在线观看视频| 国产日韩欧美高清免费| 国产男女在线观看| 日韩精品免费专区| 久久久久狠狠高潮亚洲精品| 日日骚欧美日韩| 亚洲va在线va天堂va偷拍| 久久电影网电视剧免费观看| 亚洲色图欧美自拍| 高清在线不卡av| 亚洲av网址在线| 久久久久久电影| 欧美做受高潮6| 中文字幕一区av| 麻豆一区二区三区精品视频| 欧美日韩视频免费播放| 日韩精品一区二区av| 一本色道久久综合狠狠躁的推荐 | 日韩欧美成人区| 亚洲欧美一二三区| 在线播放欧美女士性生活| 狠狠综合久久av一区二区 | 9191在线观看| 欧美成人sm免费视频| 色在线免费观看| 国产欧美久久一区二区| 538任你躁精品视频网免费| 欧美精品欧美精品| 一本一道久久a久久精品蜜桃| 日韩欧美精品免费| 欧美亚洲一区二区三区| 国产乱女淫av麻豆国产| 99精品热视频| 久久精品一区二区三区四区五区 | 亚洲美女在线观看| av二区在线| 欧美激情亚洲综合一区| 免费日韩电影| www.久久久| 欧美日韩在线网站| 成人午夜免费在线| 老司机精品视频一区二区三区| 色哟哟网站在线观看| 欧美激情资源网| 国产精品白浆一区二小说| 精品视频资源站| 后进极品白嫩翘臀在线视频| 中文国产亚洲喷潮| 日本免费一区二区六区| 成人h视频在线| 先锋影音国产精品| 超碰10000| 麻豆国产精品一区二区三区 | 国产欧美精品一区二区色综合朱莉| 久久99久久99精品免费看小说| 一本一道久久a久久精品| 午夜精品久久久久久久爽| 一二美女精品欧洲| √最新版天堂资源网在线| 91中文精品字幕在线视频| 日本道不卡免费一区| 日韩网址在线观看| 懂色av一区二区夜夜嗨| 黄色精品视频在线观看| 色香蕉久久蜜桃| 黄色www视频| 欧美另类在线观看| 成人综合日日夜夜| 亚洲精品在线免费| 日韩影院免费视频| 国产成人av一区二区三区不卡| 亚洲午夜免费电影| 99精品国产99久久久久久97| 夜夜嗨av一区二区三区四区| 国产高清不卡| 久久国产精品一区二区三区四区| 影音先锋一区| 东京热av一区| 一区二区三区四区五区视频在线观看 | 成人资源www网在线最新版| 亲爱的老师9免费观看全集电视剧| 久久99精品久久久久久欧洲站 | 亚洲欧美日韩国产一区| 毛茸茸free性熟hd| 午夜视频一区二区| 黄色三级网站在线观看| 欧美精品久久久久久久久| 少妇精品在线| 屁屁影院ccyy国产第一页| 国产精品一区二区三区网站| tube国产麻豆| 欧美一区二区三区免费| 在线中文字幕-区二区三区四区| 成人综合国产精品| 亚洲欧美伊人| 国产大尺度视频| 精品成人在线视频| 欧美xxx.com| 国产精品免费观看在线| 久久中文字幕av| 污免费在线观看| 亚洲精品综合在线| 亚洲国产精品久久久久爰性色 | 日本污视频在线观看| 亚洲激情视频在线| 欧美日韩国产v| 色女孩综合网| 精品一区二区三区欧美| 欧美精品xxxxx| 亚洲精品www久久久| 456亚洲精品成人影院| 日韩视频在线免费播放| 顶级嫩模精品视频在线看| 可以免费看的av毛片| 亚洲欧美中文日韩在线v日本| 国产精品久久久久77777丨| 久久av秘一区二区三区| 成人深夜视频在线观看| 精品不卡一区二区| 日韩在线观看免费网站| 亚洲一区二区三区中文字幕在线观看| 日韩精品在线中文字幕| 久久精品欧美一区二区三区不卡| 一本一道精品欧美中文字幕| 欧美美女18p| 蜜臀91精品国产高清在线观看| 性生活免费在线观看| 亚洲精品成a人| 看电影就来5566av视频在线播放| 国产精品自拍偷拍| 亚洲精品国产日韩| 欧美xxxooo| 日韩黄在线观看| 亚洲精品aa| 鲁一鲁一鲁一鲁一澡| 国产精品美女久久久久久 | 成人激情小说乱人伦| 波多野结衣高清在线| 欧美美女操人视频| 精品免费在线| 亚洲成年人av| 欧美日韩一级片在线观看| а√天堂8资源在线| 一区二区三区四区视频在线| 99久久夜色精品国产网站| 96亚洲精品久久久蜜桃| 热re91久久精品国99热蜜臀|