shell指令碼程式設計

2021-08-02 02:54:16 字數 1916 閱讀 8301

今天看看shell程式設計,記錄下期中與想象中不一樣的地方

0.注釋用#

1.shell的變數賦值   your_name="zhm",  在your_name和等號中間不能有空格,這和別的語言很不一樣,那麼在使用變數時和別的語言也不一樣,要使用$your_name,,一般要用

$,一定是大括號

2.那麼如何把乙個變數變成唯讀的呢,在c語言中用const  那麼shell中很直接,用   readonly  your_name來設定your_name為唯讀變數

3.shell中的字串可以用單引號也可以用雙引號,和python裡面是一樣的(原因與python不一樣----單引號裡的任何字元都會原樣輸出,單引號字串中的變數是無效的

)但是在c語言中就不一樣了,單引號內的時字元,雙引號內的才是字串。

還有一點就是單引號內不能有變數。

4.網宿最喜歡字串了,那給你乙個字串如何提取期中的一段出來呢

str="helloworld"

echo $   #提取str字串中的1到4的字串

那這個輸出應該是ello

那麼如何計算字串的長度呢

echo $     #輸出的長度是10

在這裡有點感覺「#」是用來去其後面的屬性的

5.那乙個語言總得知道其基本的資料結構吧

有兩個:變數和陣列

那如何定義陣列呢

array_name=(value1 value2 value3)

那使用和c語言裡面一樣,都是   $array_name[0]  也是變數嘛,肯定還要用$

6.那既然字串可以獲取長度,陣列肯定也可以,其實和字串差不多

array_name=("kkk" 2 3 4 5)

echo $   #獲取第0個元素的長度為3  ,根據這個就可以算出陣列總長度

echo $    #獲取陣列的個數為5

7.那既然shell是指令碼,那麼就可以向shell指令碼傳遞引數,那在指令碼裡面改如何獲取引數呢

echo "shell 傳遞引數例項!";

echo "執行的檔名:$0";

echo "第乙個引數為:$1";

echo "第二個引數為:$2";

echo "第三個引數為:$3";

echo "傳遞到指令碼引數個數:$#"

echo "指令碼執行當前程序id號:$$"

那我們能不能一次性把輸入引數全部列印出來呢,肯定可以

echo "傳遞引數作為乙個乙個字元顯示: $*"

8.對於陣列來說,我們能不能一次性列印出陣列的所有元素

array_name=(1 2 3 4)

echo "陣列的元素為: $"

9.那你知道shell中如何對數字和字串做比較的呢

在c語言中數字的比較可以直接用 "  >  <   ==   !=",在shell也可以

字串則得通過函式來做比較,比如 strcmp函式   那在shell中就簡單多了,可以用關係運算子,數字和字串都可以支援,python中字串的比較就得用函式比如cmp()

10.那幾乎每種語言裡面都會有列印的函式,shell也不例外

在shell中: printf  "----%d------%d"  $a  $b

在python中:print("----a value is:")%a

在c語言中 :printf("----a value is :%d",a)

11.你知道嗎,在shell還存在乙個奇葩命令---test

這真是個奇葩的命令,感覺沒啥用,test命令用於判斷後面的條件是否成立,這不是直接用if就好了嗎,為什麼還有這個

難道是因為其簡單,只需  test  $a -eq  $b    估計不對,請大神指點

看了下面懂了,其實test不光可以測試陣列,字串,還可以測試檔案,老有用

Shell 指令碼程式設計

1 執行shell的方法 指定shell bin sh 由sh執行指令碼 指令碼總是由sh解釋 顯示呼叫shell sh scriptname 在當前shell中執行指令碼 profile profile是可執行的 ksh profile profile是不可執行的 改變當前的執行環境責應輸入.pr...

Shell 指令碼程式設計

a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file 存在且是乙個...

Shell指令碼程式設計

1.linux中的變數 linux中的變數分為環境變數和普通變數,其中環境變數可以理解為全域性變數,在所有shell的子程式中都可以引用,普通變數只能在自己的shell程式中使用,程式結束後變數無法保留。設定環境變數的方法 1.export命令 使用者退出後失效 export test 123122...