關(guān)于shell編程1

shell是用戶(hù)和內(nèi)核進(jìn)行交互的一種接口? shell稱(chēng)為bash shell

shell 也是一門(mén)編程語(yǔ)言《解釋型編程語(yǔ)言》? 解釋型語(yǔ)言還有拍黃片——PHP 等(所以PHP是世界上最好的語(yǔ)言)

shell腳本——就是在用Linux的shell命令編程

一個(gè)系統(tǒng)存在多個(gè)shell 可以通過(guò) cat /etc/shells 查看系統(tǒng)中安裝的shell 不同的shell可能支持的命令語(yǔ)法是不相同的

第一個(gè)小實(shí)例:

--------------------------------------

while true

do

echo "i love u"

sleep 0.5

date

done

--------------------------------------

vi hello.sh

#!/bin/bash

echo "hello world"

執(zhí)行腳本 sh hello.sh

--------------------------------------

說(shuō)明:系統(tǒng)執(zhí)行文件首先從環(huán)境變量中找 但是沒(méi)有配置到環(huán)境變量中? 所有執(zhí)行當(dāng)前這個(gè)sh? 要先加./

用./hello.sh? 時(shí)出現(xiàn)權(quán)限不夠? chmod +x hello.sh 將這個(gè)文件添加執(zhí)行權(quán)限就可以了

./需要執(zhí)行權(quán)限

sh不需要姑尺,sh是個(gè)軟鏈接祥得,它可能是一個(gè)任意的shell,通常默認(rèn)是bash shell

用type命令可以查看

./執(zhí)行調(diào)用的是你開(kāi)頭一行定義的shell鲫懒,不指定系統(tǒng)會(huì)調(diào)用默認(rèn)shell程序

--------------------------------------

linux shell 中的變量分為 系統(tǒng)變量和用戶(hù)自定義變量

可以通過(guò)set命令查看

----------------------------------------

自定義變量

語(yǔ)法:

變量=值(注意等號(hào)兩邊不能有空格辜昵,Java中的習(xí)慣還是別帶過(guò)來(lái)的好)

變量名稱(chēng)一般都用大寫(xiě) (約定俗稱(chēng),不然估計(jì)要被前輩說(shuō)道)

使用變量:前面加一個(gè)$

值可以不加單雙引號(hào) 也可以加雙引號(hào) 也可以加單引號(hào)

不加:不能用空格 特殊字符

加雙引號(hào):僅使空格脫意義 ——測(cè)試中發(fā)現(xiàn)\n \t等會(huì)原樣輸出 但是用了$str 就會(huì)輸出這個(gè)變量的值(這里我也不是很清楚筐赔,沒(méi)有具體查證株婴,有讀者知道的話(huà)可以留言或私信告訴我一下)

加單引號(hào):會(huì)將所有的特殊字符脫意

e.g. 要輸出 hello worlds is great

STR="hello world"

echo "${STR}s is great"

unset A 撤銷(xiāo)變量 A

readonly B=2? 聲明靜態(tài)變量 B=2? 不能unset

vi a.sh

#!/bin/bash

A=aaaaa

echo "in a.sh,$a"

sh b.sh

vi b.sh

#!/bin/bash

echo "in b.sh,$a"

sh a.sh

結(jié)果:

in a.sh,aaaaa

in b.sh,

分析:ssh 產(chǎn)生了一個(gè) a.sh的子進(jìn)程 a.sh中又產(chǎn)生了一個(gè)b.sh的子進(jìn)程

a.sh 中定義的變量在ssh 和 b.sh中是沒(méi)有的

解決:#!/bin/bash

export A=aaaaa

echo "in a.sh,$a"

sh b.sh

完美? 變量A就變成了全局變量(不過(guò)只是子進(jìn)程中的全局變量? 在ssh中還是沒(méi)有的 子進(jìn)程空間只能訪問(wèn)父進(jìn)程中用export定義的變量? 一個(gè)shell進(jìn)程無(wú)法將自己定義的變量提升到父進(jìn)程空間中)

不過(guò)還有一種解決辦法? sh b.sh? 換成source /*/*/b.sh? 就可以完美解決不能全局變量的問(wèn)題? source就是將b.sh在a.sh的進(jìn)程空間中執(zhí)行 所以可以引用到變量

還有一個(gè)反引號(hào)的用法(將命令的運(yùn)行結(jié)果賦給一個(gè)變量? 反引號(hào)相當(dāng)于 $()? 可以根據(jù)習(xí)慣自由選擇)

DATE=`date +%Y-%m-%d --date='-1day'`

echo $DATE

輸出前一天的日期

特殊變量:

$? 表示上一個(gè)命令退出時(shí)的狀態(tài)

$$ 表示當(dāng)前進(jìn)程編號(hào)

$0 表示當(dāng)前的腳本名稱(chēng)

$n 表示n位置的輸入?yún)?shù)(n>=1)

$# 表示參數(shù)的個(gè)數(shù) 常用于循環(huán)

$* $@ 都表示參數(shù)列表("$*" 將所有參數(shù)作為一個(gè)整體 "$@"會(huì)將各個(gè)參數(shù)分開(kāi))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹲盘,一起剝皮案震驚了整個(gè)濱河市宋渔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辜限,老刑警劉巖皇拣,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡氧急,警方通過(guò)查閱死者的電腦和手機(jī)颗胡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吩坝,“玉大人毒姨,你說(shuō)我怎么就攤上這事《で蓿” “怎么了弧呐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)嵌纲。 經(jīng)常有香客問(wèn)我俘枫,道長(zhǎng),這世上最難降的妖魔是什么逮走? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任鸠蚪,我火速辦了婚禮,結(jié)果婚禮上师溅,老公的妹妹穿的比我還像新娘茅信。我一直安慰自己,他們只是感情好墓臭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布蘸鲸。 她就那樣靜靜地躺著,像睡著了一般窿锉。 火紅的嫁衣襯著肌膚如雪棚贾。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天榆综,我揣著相機(jī)與錄音,去河邊找鬼铸史。 笑死鼻疮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琳轿。 我是一名探鬼主播判沟,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼崭篡!你這毒婦竟也來(lái)了挪哄?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤琉闪,失蹤者是張志新(化名)和其女友劉穎迹炼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斯入,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年砂碉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刻两。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡增蹭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出磅摹,到底是詐尸還是另有隱情滋迈,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布户誓,位于F島的核電站饼灿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏厅克。R本人自食惡果不足惜赔退,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望证舟。 院中可真熱鬧硕旗,春花似錦、人聲如沸女责。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抵知。三九已至墙基,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刷喜,已是汗流浹背残制。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掖疮,地道東北人初茶。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像浊闪,于是被迫代替她去往敵國(guó)和親恼布。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 一搁宾,shell題記 不懂shell的程序員不是好程序員折汞,學(xué)習(xí)shell是為了自動(dòng)化,使用自動(dòng)化可以非常有效的提高工...
    架構(gòu)師小秘圈閱讀 8,722評(píng)論 3 70
  • 一盖腿、shell腳本介紹 1.1 開(kāi)頭(環(huán)境使用shebang機(jī)制) #爽待!/bin/bash 必須寫(xiě)在文件首行 符號(hào)...
    優(yōu)果馥斯閱讀 3,278評(píng)論 0 1
  • 第一節(jié) Shell概述 1.Shell是什么 Shell是一個(gè)命令行解釋器,它為用戶(hù)提供了一個(gè)向Linux內(nèi)核發(fā)送...
    littlexjing閱讀 1,917評(píng)論 0 1
  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系堕伪?...
    Zero___閱讀 3,142評(píng)論 3 49
  • 【程序23】題目:有5個(gè)人坐在一起揖庄,問(wèn)第五個(gè)人多少歲?他說(shuō)比第4個(gè)人大2歲欠雌。問(wèn)第4個(gè)人歲數(shù)蹄梢,他說(shuō)比第3個(gè)人大2歲。...
    Xplorist閱讀 151評(píng)論 0 0