shell指令碼語法

2021-10-05 10:43:30 字數 2778 閱讀 4018

#!/bin/bash 宣告指令碼使用的shell名稱

# 注釋

path=/bin:/sbin:/usr/bin:/usr/sbin

export path    宣告環境變數

互動式指令碼

read -p "please input your first name: " firstname  #提示使用者輸入

echo -e "\nyour first name is: $firstname"   #輸出結果

建立乙個帶日期的檔案

read -p "input your filename: " fieuser    #提示使用者輸入

filename=$  #判斷是否輸入檔名

date=$(date +%y%m%d)   #今天的日期

file=$$   #組成檔名

touch "$file"      #建立檔案

數值運算

read -p "first nu: " firstnu

read -p "second nu " secnu

total=$($firstnu * $secnu)

關於檔名的檔案型別判斷 test -e filename 表示是否存在

-e  檔案是否存在

-f  檔名是否存在且為檔案  

-d  檔名是否存在且為目錄

-b  檔名是否存在且為block device裝置

-c  檔名是否存在且為character device裝置

-s  檔名是否存在且為socket檔案

-p  檔名是否存在且為fifo(pipe)檔案

-l  檔名是否存在且為連線檔案

關於檔案的許可權檢測, 如test -r filename 是否可讀

-r  檔名是否存在且可讀

-w  檔名是否存在且可寫

-x  檔名是否存在且可執行

-u  檔名是否存在且有 suid的屬性

-g  檔名是否存在且有 sgid的屬性

-k  檔名是否存在且有 sticky bit的屬性

-s  檔名是否存在且為非空白檔案

兩個檔案之間的比較, 如:test file1 -nt file2

-nt file1是否比file2新

-ot file1是否比file2舊

-et 判斷file1與file2是否為同乙個檔案,可用在判斷硬鏈結上

關於兩個整數之間的判斷,如test n1 -eq n2

-eq 相等

-ne 不等

-gt 大於

-lt 小於

-ge 大於等於

-le 小於等於

判定字串資料

test -z string  字串為空時,為true

test -n string  字串為空時,為false

test str1 = str2    若相等,則為true

test str1 != str2  若不相等,則為true

多重條件判定,例如:test -r filename -a -x filename

-a  兩個條件同時成立時,則為true

-o  任何乙個條件成立時,則為true

!  反向狀態,如test ! -x file,file不是可執行檔案時,為true

[  ]  條件判斷符號

shell指令碼預設變數

$0  shell指令碼檔名, $1 $2..,shell指令碼後跟的引數

$#  後接引數個數

$@  代表"$1" "$2" "$3

$*  代表"$1c$2c$3c$4",其中c為分隔符,預設為空格

shift:造成引數變數號碼偏移

條件判斷

if [ 條件判斷式 ]; then

當前條件成立時,可進行的命令

fi&&代表and

||代表or

多重複雜條件判斷

if [ 條件判斷式一 ]; then

當前條件成立時,可進行的命令

elif [ 條件判斷式二 ]; then

當前條件成立時,可進行的命令

else

前面條件都不成立時,可執行的命令

ifcase $變數名稱 in   <==關鍵字為case,還有變數前有$

"第乙個變數內容")

程式段;;

"第二個變數內容")

程式段;;

*)程式段

;;esac

while [ condition ] <==中括號內的狀態就是判斷式

do      <==do 是迴圈的開始

程式段落

done    <==done 是迴圈的結束

當condition條件成立時,就進行迴圈

until [ condition ]

do程式段落

done

當condition條件成立時,就終止迴圈

for...do...done固定迴圈

for var in con1 con2 con3 ...

do程式段

done

for...do...done的數值處理

for (( 初始值; 限制值; 執行步長 ))

do程式段

done

shell指令碼的追蹤與除錯

sh [ -nvx ] scrips.sh

-n : 不要執行script,僅查詢語法的問題;

-v : 在執行script前,先將script的內容輸出到螢幕上;

-x : 在執行過程中,將使用到的script內容顯示到螢幕上。

Shell指令碼語法

定義單變數 p name kang 使用單變數 echo p name js 輸出kang.js echo p name.js 輸出kang.js cp p name.js copy.js 命令1 命令2 如果左邊的 命令1 執行成功,那麼右邊的 命令2 才會被執行。命令1 命令2 與 相反。如果 ...

shell指令碼 語法

條件測試 test 命令test 可以測試乙個條件是否成立,如果測試條件為真,則該命令的exitstatus為0,反之,exitstatus為1。注意 命令 各引數之間應該用空格隔開,以 結尾。但是 不是命令。測試命令 d dir 如果dir存在並且是乙個目錄則為真 f file 如果file存在並...

shell指令碼語法

測試乙個條件是否成立,python ubuntu 1004 var 2 python ubuntu 1004 test var python ubuntu 1004 echo 0python ubuntu 1004 test var gt 5 python ubuntu 1004 echo 1或者 ...