国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Shell特殊變量和命令行參數(shù)詳解

系統(tǒng) Linux 系統(tǒng)運維
shell變量是一種很“弱”的變量,默認情況下,一個變量保存一個串,shell不關(guān)心這個串是什么含義。所以若要進行數(shù)學運算,必須使用一些命令例如let、declare、expr、雙括號等。

Linux shell

1.shell變量基礎(chǔ)

shell變量是一種很“弱”的變量,默認情況下,一個變量保存一個串,shell不關(guān)心這個串是什么含義。

所以若要進行數(shù)學運算,必須使用一些命令例如let、declare、expr、雙括號等。

shell變量可分為兩類:局部變量和環(huán)境變量。

局部變量只在創(chuàng)建它們的shell中可用;而環(huán)境變量則可以在創(chuàng)建它們的shell及其派生出來的任意子進程中使用。

有些變量是用戶創(chuàng)建的,其他的則是專用shell變量。

變量名必須以字母或下劃線字符開頭。其余的字符可以是字母、數(shù)字(0~9)或下劃線字符。

任何其他的字符都標志著變量名的終止。

名字是大小寫敏感的。

給變量賦值時,等號周圍不能有任何空白符。

為了給變量賦空值,可以在等號后跟一個換行符。

用set命令可以查看所有的變量,unset var命令可以清除變量var,var相當于沒有定義過。readonly var可以把var變?yōu)橹蛔x變量,定義之后不能對var進行任何更改。

對shell變量的引用方式很多,用這些方式可以方便的獲取shell變量的值,變量值的長度,變量的一個字串,變量被部分替換后的值等等。

shell變量常見引用方式如下:

 

 

 

 

 

 

 

 

 

 

 

 

2.環(huán)境變量

環(huán)境變量的定義方法如下:

var=value

export var

shell在初始化的時候會在執(zhí)行profile等初始化腳本,腳本中定義了一些環(huán)境變量,這些變量會在創(chuàng)建子進程時傳遞給子進程。

用env命令可以查看當前的環(huán)境變量。常用的系統(tǒng)環(huán)境變量如下:

_(下劃線):上一條命令的最后一個參數(shù)

BASH:展開為調(diào)用bash實例時使用的全路徑名

CDPATH:cd命令的搜索路徑。它是以冒號分隔的目錄列表,shell通過它來搜索cd命令指定的目標目錄。例如.:~:/usr

EDITOR:內(nèi)置編輯器emacs、gmacs或vi的路徑名

ENV:每一個新的bash shell(包括腳本)啟動時執(zhí)行的環(huán)境文件。通常賦予這個變量的文件名是.bashrc。

EUID:展開為在shell啟動時被初始化的當前用戶的有效ID

GROUPS:當前用戶所屬的組

HISTFILE:指定保存命令行歷史的文件。默認值是~/.bash_history。如果被復位,交互式shell退出時將不保存命令行歷史

HISTSIZE:記錄在命令行歷史文件中的命令數(shù)。默認是500

HOME:主目錄。未指定目錄時,cd命令將轉(zhuǎn)向該目錄

IFS:內(nèi)部字段分隔符,一般是空格符、制表符和換行符,用于由命令替換,循環(huán)結(jié)構(gòu)中的表和讀取的輸入產(chǎn)生的詞的字段劃分

LANG:用來為沒有以LC_開頭的變量明確選取的種類確定locale類

OLDPWD:前一個工作目錄

PATH:命令搜索路徑。一個由冒號分隔的目錄列表,shell用它來搜索命令,一個普通值為 /usr/gnu/bin:/usr/local/bin:/usr/ucb:/usr/bin

PPID:父進程的進程ID

PS1:主提示符串,默認值是$

PS2:次提示符串,默認值是>

PS3:與select命令一起使用的選擇提示符串,默認值是#?

PS4:當開啟追蹤時使用的調(diào)試提示符串,默認值是+。追蹤可以用set –x開啟

PWD:當前工作目錄。由cd設(shè)置

RANDOM:每次引用該變量,就產(chǎn)生一個隨機整數(shù)。隨機數(shù)序列可以通過給RANDOM賦值來初始化。如果RANDOM被復位,即使隨后再設(shè)置,它也將失去特定的屬性

REPLY:當沒有給read提供參數(shù)時設(shè)置

SHELL:當調(diào)用shell時,它掃描環(huán)境變量以尋找該名字。shell給PATH、PS1、PS2、MAILCHECK和IFS設(shè)置默認值。HOME和MAIL由login(1)設(shè)置

SHELLOPTS:包含一列開啟的shell選項,比如braceexpand、hashall、monitor等

UID:展開為當前用戶的用戶ID,在shell啟動時初始化

3.數(shù)值變量

shell中默認把變量值當作字符串,例如:

  1. age=22 
  2.  
  3. age=${age}+1 
  4.  
  5. echo ${age} 

 

輸出結(jié)果為22+1,而不是23,因為shell將其解釋為字符串,而不是數(shù)學運算。

可以用let命令使其進行數(shù)學運算,例如:

  1. let age=${age}+1 

也可以用declare把變量定義為整型。例如:

  1. declare -i age=22 

這里就用 -i 選項把age定義為整型的了。此后每次運算,都把age的右值識別為算術(shù)表達式或數(shù)字。

4.數(shù)組

在shell中可以使用數(shù)組,例如:

  1. array[0]=0 
  2.  
  3. array[1]=1 
  4.  
  5. array[2]=2 

 

則array就是一個數(shù)組,也可以這樣給數(shù)組初始化:

  1. array=(0 1 2) // 元素之間以空格分隔 

可以通過 ${array[$i]}來訪問array中某個元素,${array[*]} 的返回值即數(shù)組的所有元素組成的串,${#array[*]} 的返回值即數(shù)組的元素個數(shù),${array[*]:0:2} 返回第一個和第二個元素組成的串。

0表示開始的位置,2表示要返回的元素個數(shù),開始位置可以為0-2(0減去2)之類的,表示從倒數(shù)第二個元素開始。

下面寫個稍微復雜點的例子:

 

 

 

 

如果要使用二維數(shù)組甚至三維數(shù)組該怎么實現(xiàn)呢,那就需要用eval命令來模擬數(shù)組的功能了。

eval命令的作用是掃描命令兩次再執(zhí)行,如果不使用eval,只掃描一次,然后執(zhí)行。看個例子:

  1. root@suse:~$ name=Barry 
  2.  
  3. root@suse:~$ $name=hello 
  4.  
  5. Barry=hello: command not found 

 

為什么第二句給Barry變量賦值會出錯呢?

從報錯信息可以發(fā)現(xiàn)shell并沒有識別這是個賦值語句,而是把Barry=hello當作一個命令來執(zhí)行,當然會報錯。

為什么不能識別這是賦值語句呢?

第一次掃描時,因為掃描到$符號,所以不能把這句當作賦值語句,賦值語句的左邊總是一個變量名,而不應該是$開頭的。

所以第一次掃描僅僅識別了$name變量,并做了替換,而并沒有認識到賦值語句。

如果使用eval $name=hello呢?

 

  1. root@suse:~$ name=Barry 
  2.  
  3. root@suse:~$ $name=hello 
  4.  
  5. Barry=hello: command not found 
  6.  
  7. root@suse:~$ eval $name=hello 
  8.  
  9. root@suse:~$ echo $Barry 
  10.  
  11. hello 

 

可見使用了eval之后,對 $name=hello 第一次掃描替換了$name,沒有識別賦值語句,第二次掃描識別是賦值語句,然后執(zhí)行。

現(xiàn)在大約可以想到怎樣用eval實現(xiàn)二維數(shù)組了。

下面實現(xiàn)的二維數(shù)組每一行代表一個人的信息記錄,包括姓名,年齡。

 

 

 

 

5.特殊變量

$0:當前腳本的文件名

$num:num為從1開始的數(shù)字,$1是第一個參數(shù),$2是第二個參數(shù),${10}是第十個參數(shù)

$#:傳入腳本的參數(shù)的個數(shù)

$*:所有的位置參數(shù)(作為單個字符串)

$@:所有的位置參數(shù)(每個都作為獨立的字符串)。

$?:當前shell進程中,上一個命令的返回值,如果上一個命令成功執(zhí)行則$?的值為0,否則為其他非零值,常用做if語句條件

$$:當前shell進程的pid

$!:后臺運行的最后一個進程的pid

$-:顯示shell使用的當前選項

$_:之前命令的最后一個參數(shù) 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關(guān)推薦

2021-01-13 05:29:26

命令行

2023-11-30 10:42:43

Rust命令行參數(shù)

2019-04-16 06:50:34

2021-05-31 12:05:46

Shell命令Linux

2010-11-24 15:33:59

mysql命令行參數(shù)

2010-03-10 17:23:37

Python 命令行參

2009-12-24 14:51:39

Linux命令行

2023-07-05 08:38:48

GolangGo語言

2010-07-20 14:02:38

Perl命令行參數(shù)

2010-07-26 09:32:41

Perl命令行

2011-08-22 11:51:13

Linuxconfigure

2024-03-06 15:57:56

ShellLinux

2009-08-11 09:58:22

Linux命令行Linux命令svn命令

2009-12-02 11:20:56

PHP命令行參數(shù)

2011-02-23 17:07:47

FileZillaSe

2010-07-15 09:27:25

Perl命令行

2010-07-26 09:22:05

Perl命令行

2009-12-25 16:04:06

shell命令行

2009-11-18 13:46:11

PHP命令行

2017-05-25 10:32:40

命令linux系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號

日韩av综合网站| 国内精品视频一区| 国产视频一二三| 高清国产午夜精品久久久久久| 亚洲伊人一本大道中文字幕| 亚洲另类春色校园小说| 欧美肥臀大乳一区二区免费视频| 欧美与亚洲与日本直播| 亚洲欧美国产制服动漫| 日本色护士高潮视频在线观看| 欧美天天综合色影久久精品| 瑜伽美女视频| 亚洲自拍另类综合| 国产又粗又长又大的视频| av一区二区三区黑人| 日韩精品第1页| 国产精品性做久久久久久| 亚洲一区bb| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久成人免费网| 色之综合天天综合色天天棕色| 亚洲深爱激情| 日韩精品一区二区三区色偷偷| 蜜乳av另类精品一区二区| 日韩精品久久一区| 久草这里只有精品视频| 国产精品12p| 国产69精品久久久久毛片| 免费无遮挡无码永久视频| 2欧美一区二区三区在线观看视频| 欧美日韩二三区| 国产精品高潮呻吟| 色视频www在线播放| 在线免费观看视频一区| 2024最新电影在线免费观看| 日韩激情在线视频| 国产精品一区二区三区av| 欧美在线视频网| 99久久激情| 日韩精品不卡| 91香蕉国产在线观看软件| 国产在线视频你懂| 欧美午夜寂寞影院| 成人影院大全| 欧美野外猛男的大粗鳮| 在线观看日韩| 资源网第一页久久久| 久久精品综合网| 日本高清中文字幕二区在线| 精品国产乱码久久久久久久| 亚洲色图图片| 91原创国产| 国产一区二区精品在线观看| www.精品在线| 欧美日韩一区二区欧美激情 | 奇米777四色影视在线看| 国产欧美一区二区精品仙草咪| 在线播放evaelfie极品| 91精品综合久久久久久| 欧美综合影院| 91精品中文在线| 国产一区二区按摩在线观看| 国产精品原创巨作av| 超碰97免费观看| 亚洲激情中文| 美女av一区二区| 国产精品入口芒果| 午夜视频在线观看精品中文| 久久香蕉国产线看观看网| 超碰精品一区二区三区乱码| 风间由美性色一区二区三区四区| 成人免费视频97| 精品一区二区综合| 九色porny蝌蚪视频在线观看| 欧美精选在线播放| 亚洲午夜免费| 六月婷婷久久| 国产精品沙发午睡系列990531| 黄色片网站在线观看| 久久久久久久av| 天堂成人免费av电影一区| 上原亚衣加勒比在线播放| 亚洲电影免费观看高清完整版在线| 欧美91在线| 中国女人做爰视频| 色系网站成人免费| 第一区第二区在线| 四虎精品欧美一区二区免费| 色婷婷亚洲综合| 精品无人区一区二区| 中国黄色录像片| 制服视频三区第一页精品| 一本色道久久综合亚洲精品酒店 | 精品视频在线播放一区二区三区| 久久国产精品久久| 亚洲成人在线网站| 亚洲国产欧美在线观看| 国产高清免费在线| 欧美日韩卡一卡二| 国产精品美女久久久久久不卡| 国产精品88久久久久久妇女| 欧美精品v国产精品v日韩精品| 日韩超碰人人爽人人做人人添| 国产乱子伦精品视频| 欧美一区二区黄| 激情成人亚洲| 亚洲尤物在线视频| 91精品国产高清久久久久久久久 | 久久五月天婷婷| 亚洲成人免费电影| xvideos.蜜桃一区二区| 日韩精品在线中文字幕| 精品少妇一区二区三区在线播放| 正在播放日韩欧美一页 | 国产精品中文字幕在线| 久久久噜噜噜久久人人看 | 亚洲白拍色综合图区| 亚洲一区在线| 色资源网站在线观看| 91精品国产高清| 亚洲国产精品国自产拍av| 欧美伊人亚洲伊人色综合动图| 9l视频自拍9l视频自拍| 亚洲国产天堂久久国产91| 一二三区精品| 国产69精品久久app免费版| 亚洲一区久久久| 日韩欧美国产黄色| 亚洲精品成人无限看| 四虎影视精品成人| 97久草视频| 欧美视频一区在线观看| 99精品99| 丁香花在线观看完整版电影| 亚洲成人午夜在线| 日韩精品中文在线观看| 国产福利一区在线| 欧美网站免费| 99热手机在线| 国产成人aa精品一区在线播放| 玉足女爽爽91| 午夜激情久久| 欧美尤物美女在线| 亚洲国产成人不卡| 日韩精品免费在线播放| 国产不卡一区视频| 中文字幕一区图| 成人综合av| 国产精品二区三区| 精品黑人一区二区三区久久| 国产成人在线视频免费播放| 电影91久久久| 免费福利影院| 久久草.com| 亚洲精品在线观看www| 99久久伊人网影院| 成人午夜大片| 四虎精品在线| 久久精品二区| 国产亚洲精品一区二区| 亚洲国产精品激情在线观看 | 久久精品一本久久99精品| 国产清纯在线一区二区www| 欧美日韩在线观看视频小说| 国产高清视频在线| 2021狠狠干| 国内久久久精品| 欧亚一区二区三区| 国产一区二区在线影院| 天海翼亚洲一区二区三区| 婷婷成人激情| 久久综合九色综合88i| 日本电影亚洲天堂| 91精品欧美久久久久久动漫 | 亚洲日本护士毛茸茸| 国产精品久久久久久久| a毛片在线看免费观看| 少妇人妻无码专区视频| 国产精品国产三级国产专播精品人 | 91老司机在线| 亚洲精品在线观| 国产日韩欧美麻豆| 国产一区日韩一区| 国产91在线播放精品| 三级黄视频在线观看| 亚洲欧美日韩精品久久久| 欧美在线观看视频| 91精品国产91久久久久久一区二区 | 99在线热播精品免费| 欧美一区二区麻豆红桃视频| 18+激情视频在线| 国产精品一区二区小说| 久精品国产欧美| 欧美日产国产成人免费图片| 日韩电影精品| 91成人短视频| 成人在线观看免费| 波多野结衣久久精品| 亚洲第一偷拍| 日韩三级在线|