shell中的邏輯判斷
格式1:if 條件 ; then 語句; fi
格式2:if 條件; then 語句; else 語句; fi
格式3:if …; then … ;elif …; then …; else …; fi
邏輯判斷表示式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意到處都是空格
可以使用 && || 結合多個條件
if [ $a -gt 5 ] && [ $a -lt 10 ]; then
if [ $b -gt 5 ] || [ $b -lt 3 ]; then
10 -eq 20: a 不等於 b#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com
a=10
b=20
if [ $a
-eq$b ]
then
echo
"$a -eq $b : a 等於 b"
else
echo
"$a -eq $b: a 不等於 b"
fiif [ $a
-ne$b ]
then
echo
"$a -ne $b: a 不等於 b"
else
echo
"$a -ne $b : a 等於 b"
fiif [ $a
-gt$b ]
then
echo
"$a -gt $b: a 大於 b"
else
echo
"$a -gt $b: a 不大於 b"
fiif [ $a
-lt$b ]
then
echo
"$a -lt $b: a 小於 b"
else
echo
"$a -lt $b: a 不小於 b"
fiif [ $a -ge $b ]
then
echo
"$a -ge $b: a 大於或等於 b"
else
echo
"$a -ge $b: a 小於 b"
fiif [ $a -le $b ]
then
echo
"$a -le $b: a 小於或等於 b"
else
echo
"$a -le $b: a 大於 b"
fi
10 -ne 20: a 不等於 b
10 -gt 20: a 不大於 b
10 -lt 20: a 小於 b
10 -ge 20: a 小於 b
10 -le 20: a 小於或等於 b
if 判斷檔案、目錄屬性
[ -f file ]判斷是否是普通檔案,且存在
[ -d file ] 判斷是否是目錄,且存在
[ -e file ] 判斷檔案或目錄是否存在
[ -r file ] 判斷檔案是否可讀
[ -w file ] 判斷檔案是否可寫
[ -x file ] 判斷檔案是否可執行
檔案可讀#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com
file="/var/www/runoob/test.sh"
if [ -r $file ]
then
echo
"檔案可讀"
else
echo
"檔案不可讀"
fiif [ -w $file ]
then
echo
"檔案可寫"
else
echo
"檔案不可寫"
fiif [ -x $file ]
then
echo
"檔案可執行"
else
echo
"檔案不可執行"
fiif [ -f
$file ]
then
echo
"檔案為普通檔案"
else
echo
"檔案為特殊檔案"
fiif [ -d
$file ]
then
echo
"檔案是個目錄"
else
echo
"檔案不是個目錄"
fiif [ -s
$file ]
then
echo
"檔案不為空"
else
echo
"檔案為空"
fiif [ -e
$file ]
then
echo
"檔案存在"
else
echo
"檔案不存在"
fi
檔案可寫
檔案可執行
檔案為普通檔案
檔案不是個目錄
檔案不為空
檔案存在
if判斷的一些特殊用法
if [ -z 「$a」 ] 這個表示當變數a的值為空時會怎麼樣
if [ -n 「$a」 ] 表示當變數a的值不為空
if grep -q 『123』 1.txt; then 表示如果1.txt中含有』123』的行時會怎麼樣
if [ ! -e file ]; then 表示檔案不存在時會怎麼樣
if (($a<1)); then …等同於 if [ $a -lt 1 ]; then…
[ ] 中不能使用<,>,==,!=,>=,<=這樣的符號
#!/bin/bash
# author:菜鳥教程
# url:www.runoob.com
a="abc"
b="efg"
if [ $a = $b ]
then
echo
"$a = $b : a 等於 b"
else
echo
"$a = $b: a 不等於 b"
fiif [ $a != $b ]
then
echo
"$a != $b : a 不等於 b"
else
echo
"$a != $b: a 等於 b"
fiif [ -z $a ]
then
echo
"-z $a : 字串長度為 0"
else
echo
"-z $a : 字串長度不為 0"
fiif [ -n $a ]
then
echo
"-n $a : 字串長度不為 0"
else
echo
"-n $a : 字串長度為 0"
fiif [ $a ]
then
echo
"$a : 字串不為空"
else
echo
"$a : 字串為空"
fi
shell中的case判斷abc = efg: a 不等於 b
abc != efg : a 不等於 b
-z abc : 字串長度不為 0
-n abc : 字串長度不為 0
abc : 字串不為空
格式 case 變數名 in
value1)
command
;; value2)
command
;; *)
commond
;; esac
在case程式中,可以在條件中使用|,表示或的意思, 比如 2|3) command ;;
十六周三次課(2月6日)
20.5 shell指令碼中的邏輯判斷
20.6 檔案目錄屬性判斷
20.7 if特殊用法
20.8/20.9 case判斷
Shell指令碼中的邏輯判斷
1.格式1 if 條件 then 語句 fi ok root localhost if a 3 如果a大於3 then echo ok 輸出ok fiok root localhost if a 3 then echo ok fi ok root localhost shell vi if01.sh...
shell中括號的特殊用法
shell中的括號有其特殊的用法,現總結如下 1.符號 後的括號 變數a的值,在不引起歧義的情況下可以省略大括號.cmd 命令替換,結果為shell命令cmd的輸出,和 cmd 效果相同,不過某些shell版本不支援 形式的命令替換,如tcsh.exp 和 expr exp 效果相同,計算數學表示式...
shell中括號的特殊用法
shell中的括號有其特殊的用法,現總結如下 1.符號 後的括號 變數a的值,在不引起歧義的情況下可以省略大括號.cmd 命令替換,結果為shell命令cmd的輸出,和 cmd 效果相同,不過某些shell版本不支援 形式的命令替換,如tcsh.exp 和 expr exp 效果相同,計算數學表示式...