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...