Linux學習之shell程式設計一

2021-06-20 23:46:30 字數 2156 閱讀 6251

獲取變數的值可以使用$var或者$後者可以預防變數讀取錯誤。$(command)可以獲得命令的執行結果。

1. shell指令碼的書寫格式

1 #!/bin/bash

2 #程式說明(包括日期,作者,程式作用等資訊)

3 path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

4 echo -e "hello world!\a\n"

5 exit 0

2. 條件判斷

(1)利用test命令測試功能

例如檢視某一檔案是否存在:test -e filename

test -e poem.txt && echo "exist"||echo "not exist"
當poem.txt存在時才會執行echo "exist",否則執行echo "not exist"。

test命令關於檔案的選項有以下幾個:

-b file 如果檔案為乙個塊特殊檔案,則為真

-c file 如果檔案為乙個字元特殊檔案,則為真

-d file 如果檔案為乙個目錄,則為真

sr:v\3j0-e file 如果檔案存在,則為真

-f file 如果檔案為乙個普通檔案,則為真

-g file 如果設定了檔案的 sgid 位,則為真

-g file 如果檔案存在且歸該組所有,則為真

-k file 如果設定了檔案的粘著位,則為真

-o file 如果檔案存在並且歸該使用者所有,則為真

-p file 如果檔案為乙個命名管道,則為真

-r file 如果檔案可讀,則為真

-s file 如果檔案的長度不為零,則為真

-s file 如果檔案為乙個套接字特殊檔案,則為真

-t fd 如果 fd 是乙個與終端相連的開啟的檔案描述符(fd 預設為 1),則為真

-u file 如果設定了檔案的 suid 位,則為真

-w file 如果檔案可寫,則為真

-x file 如果檔案可執行,則為真

另外關於兩個檔案之間的比較選項有:

-ef-nt

-ottest  file1 -ef file2測試以判斷兩個檔案是否與同乙個裝置相連,是否擁有相同的 inode 編號

test  file1 -nt file2 測試以判斷第乙個檔案是否比第二個檔案更新(由修改日期決定)

test  file1 -ot file2 測試以判斷第乙個檔案是否比第二個檔案更舊

關於字串的判斷選項有:

test  -z  string  判斷string是否為空

test  -n  string  判斷string是否非空

test  str1=str2  判斷str1是否等於str2

test  str1!=str2  判斷str1是否不等於str2

多重條件判斷:

-a  兩個條件同時成立  例如test -r file1 -a -x file1,判斷file1是否同時可讀可執行

-o  任何乙個條件成立  例如test -r file1 -o -x file1,判斷file1具有可讀或者可執行許可權

!  取反,例如test !-x  file1,file1不具有可執行許可權時,返回true

(2)利用[ ]進行條件判斷

除了使用test命令進行條件判斷之外,還可以使用符號來判斷。

例如  [ -z "$home" ] ; echo $?

需要注意的是:

在中括號內的每個元件都要用空格分隔;

在中括號內的變數和常量最好都以雙引號引起來。

例如根據使用者輸入字元y或n分別顯示yes或no

#!/bin/bash

read -p "please input you chaoice(y/n)" ch

[ "$ch" == "y" -o "$ch" == "y" ] && echo "yes!" && exit 0

[" $ch " == "n" -o "$ch" == "n" ] && echo "no!" && exit 0

echo "i don't know what you input~"

Linux學習之shell程式設計二

shell script 的預設變數 0,1.代表後接的引數個數 代表 1,2,3,4之意 代表 1c 2c 3c 4 其中c為分隔符,預設為空格 shift 可以偏移變數號碼,比如shift 或者shift 2可以將變數 向左移動1次或2次 bin bash filename shell05.sh...

Linux學習之Shell指令碼程式設計

一.shell指令碼定義 shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。實際上shell是乙個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心。shell翻譯成殼的意思,它是包裹在linux核心外層的,乙個可通過一系列的li...

linux之shell程式設計

shell你只需要了解這麼多 補充 1.第七部分特殊字元的使用 特殊字元用在shell指令碼中即可 2.第八部分中轉義字元的理解 shell命令列中特殊字元與其轉義詳解 去除特殊含義 這部分主要給大家詳細介紹了shell命令列中特殊字元與其轉義 去除特殊含義 的相關資料,文中介紹的很詳細,相信對大家...