Linux筆記 shell總結 3

2021-07-22 21:07:18 字數 2682 閱讀 6124

經過前兩個總結,你應該已經明白了什麼是shell指令碼?首先它是乙個指令碼,並不能作為正式的程式語言。因為是跑在linux的shell中,所以叫shell指令碼。說白了,shell指令碼就是一些命令的集合。

[基本結構以及如何執行]:

shell指令碼通常都是以.sh 為字尾名的,這個並不是說不帶.sh這個指令碼就不能執行,只是大家的乙個習慣而已。test.sh中第一行一定是 「#! /bin/bash」 它代表的意思是,該檔案使用的是bash語法。如果不設定該行,那麼你的shell指令碼就不能被執行。』#』表示注釋,在前面講過的。後面跟一些該指令碼的相關注釋內容以及作者和建立日期或者版本等等。該指令碼再往下面則為要執行的命令了。

shell指令碼的執行很簡單,直接」sh filename 「 即可,另外你還可以給檔案加上可執行許可權,在直接執行。預設我們用vim編輯的文件是不帶有執行許可權的,所以需要加乙個執行許可權,那樣就可以直接使用』./filename』 執行這個指令碼了。

另外使用sh命令去執行乙個shell指令碼的時候是可以加-x選項來檢視這個指令碼執行過程的,這樣有利於我們除錯這個指令碼**出了問題。

該shell指令碼中用到了』date』這個命令,它的作用就是用來列印當前系統的時間。其實在shell指令碼中date使用率非常高。

[變數]:

使用shell來計算兩個變數的和:

這就用到了read命令了,它可以從標準輸入獲得變數的值,後跟變數名。」read x」表示x變數的值需要使用者通過鍵盤輸入得到。

更簡潔的書寫方式:

read -p 選項類似echo的作用。執行如下:

如下乙個程式:

在指令碼中,你會不會奇怪,**來的$1和$2,這其實就是shell指令碼的預設變數,其中$1的值就是在執行的時候輸入的1,而$2的值就是執行的時候輸入的$2,當然乙個shell指令碼的預設變數是沒有限制的,這回你明白了吧。執行如下:

[ if 語句]:

不帶else

if 判斷語句; then

command

fi 在if1.sh中出現了 ((a<60))這樣的形式,這是shell指令碼中特有的格式,用乙個小括號或者不用都會報錯,請記住這個格式即可。執行結果為:

帶有else

if 判斷語句 ; then

command

else

command

fi 執行結果為:

帶有elif

if 判斷語句一 ; then

command

elif 判斷語句二; then

command

else

command

fi 執行結果為:

以上只是簡單的介紹了if語句的結構。在判斷數值大小除了可以用」(( ))」的形式外,還可以使用」[ ]」。但是就不能使用》, < , = 這樣的符號了,要使用 -lt (小於),-gt (大於),-le (小於等於),-ge (大於等於),-eq (等於),-ne (不等於)。

shell 指令碼中if還經常判斷關於檔案屬性,比如判斷是普通檔案還是目錄,判斷檔案是否有讀寫執行許可權等。常用的幾個選項:

-e :判斷檔案或目錄是否存在

-d :判斷是不是目錄,並是否存在

-f :判斷是否是普通檔案,並存在

-r :判斷文件是否有讀許可權

-w :判斷是否有寫許可權

-x :判斷是否可執行

使用if判斷時,具體格式為: if [ -option filename ] ; then

[迴圈語句]:

[函式]:

有時候指令碼中的某段代總是重複使用,如果寫成函式,每次用到時直接用函式名代替即可,這樣就節省了時間還節省了空間。

fun.sh 中的sum() 為自定義的函式,在shell指令碼中要用

function 函式名()

執行結果為:

Linux學習筆記 shell 3

root dark test e hehehe 檢查檔案hehehe是否存在,並不會顯示任何結果 root dark test e hehehe echo exist echo not exist 關於兩個整數之間的判定,例子 test n1 eq n2 eq 兩數值相等 ne 兩數值不等 gt n...

Linux學習筆記3 常用shell命令

root localhost root 當前使用者 localhost 主機名 當前目錄 超級使用者的提示符 普通使用者的提示符 一般命令格式 命令 選項 引數 1.ls 選項 目錄或檔案 a 顯示所有檔案包括隱藏 all l 顯示詳細資訊long d 檢視目錄屬性dir h 人性化顯示檔案大小 h...

SHELL學習筆記(3)

文字處理工具 1 排序文字 sort sort lines of text files b,ignore leading blanks ignore leading blanks d,dictionary order consider only blanks and alphanumeric cha...