shell,是一個(gè)用C語(yǔ)言編寫(xiě)的應(yīng)用程序滔韵,是用戶使用linux的橋梁逻谦。所以呢,他既是一種命令語(yǔ)言陪蜻,同時(shí)呢還是一種程序設(shè)計(jì)語(yǔ)言邦马。shell腳本(shell script),是一種為shell編寫(xiě)的腳本程序囱皿。業(yè)界所說(shuō)的shell通常都是指shell腳本勇婴,shell和shell script是兩個(gè)不同的概念。由于習(xí)慣的原因嘱腥,簡(jiǎn)介起見(jiàn),本文出現(xiàn)的“shell編程”都是指shell腳本編程拘悦,而不是指開(kāi)發(fā)shell自身齿兔,注意兩者的區(qū)別啊,小猿圈上有詳細(xì)視頻講解础米。
? ? 下面開(kāi)始說(shuō)一下shell用法分苇。
? ? shell腳本開(kāi)頭呢,必須要注明自己用的是那個(gè)解釋器屁桑。保存的文件后綴名為***.sh就好了医寿。我用的是bash,所以開(kāi)頭需要注上#!/bin/bash
? ? 然后就是輸出了蘑斧,跟php類似靖秩,echo就可以輸出東西:echo "hello word!",就可以輸出內(nèi)容了竖瘾。我是在windows上使用git GUI來(lái)運(yùn)行的沟突,具體運(yùn)行方式為./test.sh,然后回車就運(yùn)行了這個(gè)test.sh文件捕传。最主要的是shell里沒(méi)有類似php的;似得分界符惠拭,只要換行就是另外的輸出了。
? ? 再來(lái)就是shell中的變量問(wèn)題了庸论,跟php的變量命名規(guī)則差不多职辅,唯一不同的就是不需要使用$開(kāi)頭來(lái)命名變量,但是輸出或者使用變量的時(shí)候必須使用$聂示。具體方式為your_name="alex"(變量命名)域携,echo $your_name。還有就是咱們phper的習(xí)慣是命名時(shí)習(xí)慣性的會(huì)加上空格:$your_name = "alex";催什,但是這是不正確的涵亏,等號(hào)兩邊不能加上空格宰睡,加上就算是常規(guī)性的defined。剛剛開(kāi)始用shell的時(shí)候很多人就經(jīng)常踩進(jìn)這個(gè)坑啦气筋。另拆内,變量還有一種輸出方式:echo "${your_name} is my friend",其主要目的是為了幫助解釋器識(shí)別變量邊界宠默。比較個(gè)性的是我們還可以使用readonly這個(gè)命令來(lái)使我們的變量只具有讀的屬性而不能修改麸恍,看起來(lái)比較高達(dá)上的樣子。我們就可以用unset加變量名的方式來(lái)刪除我們所定義的變量搀矫。接下來(lái)按照php的套路抹沪,我們最后要確定的就是變量的類型,按照官方解釋如下:
運(yùn)行shell時(shí)瓤球,會(huì)同時(shí)存在三種變量:
1) 局部變量 局部變量在腳本或命令中定義融欧,僅在當(dāng)前shell實(shí)例中有效,其他shell啟動(dòng)的程序不能訪問(wèn)局部變量卦羡。
2) 環(huán)境變量 所有的程序噪馏,包括shell啟動(dòng)的程序,都能訪問(wèn)環(huán)境變量绿饵,有些程序需要環(huán)境變量來(lái)保證其正常運(yùn)行欠肾。必要的時(shí)候shell腳本也可以定義環(huán)境變量。
3) shell變量 shell變量是由shell程序設(shè)置的特殊變量拟赊。shell變量中有一部分是環(huán)境變量刺桃,有一部分是局部變量,這些變量保證了shell的正常運(yùn)行
? ? 好的吸祟,然后就到了字符串這塊了瑟慈。其實(shí)不外乎獲取字符串的長(zhǎng)度,截取字符串欢搜,拼接字符串等有限的幾個(gè)方面封豪。在開(kāi)始之前呢,還有一點(diǎn)需要提前說(shuō)明的就是單雙引號(hào)之間的區(qū)別和用途:
單引號(hào)里的任何字符都會(huì)原樣輸出炒瘟,單引號(hào)字符串中的變量是無(wú)效的吹埠;
單引號(hào)字串中不能出現(xiàn)單引號(hào)(對(duì)單引號(hào)使用轉(zhuǎn)義符后也不行)。
雙引號(hào)里可以有變量
雙引號(hào)里可以出現(xiàn)轉(zhuǎn)義字符
? ? 字符串拼接與我們php的樣式略微的有差異疮装,那就是沒(méi)有連接符:
your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
? ? 獲取字符串長(zhǎng)度:
string="abcd"
echo ${#string} #輸出 4
? ? 提取子字符串(以下示例是從字符串第二個(gè)開(kāi)始缘琅,截取四個(gè)字符):
string="runoob is a great site"
echo ${string:1:4} # 輸出 unoo
? ? 字符串查找(以下示例的“`”是Esc鍵下面的那個(gè)):
string="runoob is a great company"
echo `expr index "$string" is`? # 輸出 8
這樣的解釋小編認(rèn)為已經(jīng)很清楚了,對(duì)shell腳本感興趣的朋友廓推,可以從這篇shell基礎(chǔ)篇學(xué)起刷袍,站在一個(gè)小白的角度寫(xiě)的,相信即使是小白樊展,也可以透透徹徹的學(xué)習(xí)呻纹,感覺(jué)不錯(cuò)的朋友可以去小猿圈官網(wǎng)上學(xué)習(xí)一下堆生,希望對(duì)你收獲很大。