Linux命令列與shell程式設計筆記 結構化命令

2021-07-17 00:04:25 字數 4024 閱讀 6768

if

command

then

command

fi

這個結構就是if 部分命令成功執行,就執行then,否則跳過then。就是c語言中的if沒有else的部分。但是不要理解為ifcommand為真執行then部分的命令。

if

command

then

command

else

command

fi

如果if後面的命令退出狀態碼=0,那麼就執行then,否則,執行else

if command1  

then

commands

elif command2

then

commands

fi

test命令

test命令中列出的條件成立,test命令就會退出並且返回退出狀態碼0,如果條件不成立,返回退出狀態碼1.在這種情況下,if形式完全等同於其他語言的if語句

if test condition  

then

commands

fi#或者

if [ command ]

then

commands

fi#方括號兩邊必須加入乙個空格,不然會報錯

test命令可以比較3類條件,數字比較,字串比較,檔案比較

1 數值比較

比較 描述

n1 -eq n2 檢查n1是否與n2相等

n1 -ge n2 檢查n1是否大於或等於n2

n1 -gt n2 檢查n1是否大於n2

n1 -le n2 檢查n1是否小於或等於n2

n1 -lt n2 檢查n1是否小於n2

n1 -ne n2 檢查n1是否不等於n2

注意:不能使用浮點數

2 字串比較

比較 描述

str1 = str2 檢查str1是否和str2相同

str1 != str2 檢查str1是否和str2不同

str1 < str2 檢查str1是否比str2小

str1 > str2 檢查str1是否比str2大

-n str1 檢查str1的長度是否非0

-z str1 檢查str1的長度是否為0

1.大於小於符號要轉義,不然會被識別為重定向符號

2.test命令根據ascii順序排序,與sort命令不同

字串長度

當變數為空字串或者沒有初始化時,變成長度是0

空字串或沒有初始化的變數可能會對程式有災難性影響,使用前最好先使用test命令中的-n和-z確認

3檔案比較

比較 描述

-d file 檢查file是否存在並且是否是乙個目錄

-e file 檢查file是否存在

-f file 檢查file是否存在並且是否是乙個檔案

-r file 檢查file是否存在並可讀

-s 檢查file是否存在並非空

-w 檢查file是否存在並可寫

-x 檢查file是否存在並可執行

-o 檢查file是否存在並屬於當前使用者所有

-g 檢查file是否存在並且預設組與當前使用者相同

file1 -nt file2 檢查file1是否比file2新(new than)

file1 -ot file2 檢查file1是否比file2舊(old than)

這是比較檔案的建立時間

多個條件一起判斷:|| &&

使用雙尖括號

將高階數學表示式放入其中。

命令符號

符號 描述

val++ 後增

val– 後減

++val 先增

–val 先減

! 邏輯求反

~ 位求反

** 冪運算

<< 左位移

的》 右位移

& 位布林和

| 位布林或

&& 邏輯和

|| 邏輯或

使用雙方括號

提供了模式匹配(pattern matching)特性,可以在其中使用正規表示式

if [[ $user == r* ]]

case命令

命令格式:

case

variable

in

pattern1 | pattern2) commands1;;

pattern3) commands2;;

*) default commands;;

esac

bash中是可以在case中檢查字串的

case

$user

inrich | barbara)

echo

"welcome $user";;

testing)

echo

"echo "special testing account";;

jessica)

echo "

do not forget to log off when you are done

";;*)

echo "sorry you are not allowed here";;

esac

for var in list

docommand

done

list中根據空格確定var,也可以更改字段分隔符(空格,製表符,換行符)

在shell指令碼中更改ifs環境變數

ifs=$』\n』

for var incat $file

for var in /home/rich/test/*

c語言風格的for命令

for((variable assignment;condtion;interator process))

do commands

done

for((i=1;i<=10;++i))

while命令

while test command

do

other commands

done

當使用多個測試命令,只有最後乙個測試命令的退出狀態碼會被用來決定什麼時候結束迴圈

until命令

其工作方式與while相反,要求指定乙個輸出非零退出狀態碼的測試命令

until test commands  

do

other commands

done

控制迴圈

break

continue

他們都可以指定跳出/繼續的迴圈層數

break n

continue n

n預設都為1

處理迴圈的輸出

可以在迴圈的done之後接管輸出,比如

for var in a b c  

doecho

"$var"

done > out.txt

for var in a b c

doecho

"$var"

done | sort

Linux命令列與shell指令碼

路徑 cd destinationcp 命令在複製檔案時有兩個引數,源物件和目標物件 cp source destinationpwd 命令可以顯示出shell會話的當前目錄 單點符 表示當前目錄 雙點符 表示當前目錄的父目錄 ls 列表命令,輸出的列表是按字母 按列排序的 ls l 顯示附加資訊,...

Linux命令列與shell指令碼

一 linux簡介 1.linux系統內部結構 劃分為以下四部分 linux核心 gnu工具元件 圖形化桌面環境 應用軟體。2.linux系統的核心 核心 核心基本負責以下四項主要功能 系統記憶體管理 包括物理記憶體和虛擬記憶體 軟體程式管理 硬體裝置管理 檔案系統管理。1 系統記憶體管理 可以檢視...

Linux命令列與shell的區別

答 shell翻譯成殼的意思,它是包裹在linux核心外層的,乙個可通過一系列的linux命令對作業系統發出相關指令的人機介面。shell可以通過其條件語句和迴圈語句等,把一系列linux命令結合在一起,形成乙個相當於面向過程的程式,shell script,來實現一些較為複雜的功能。總括,shel...