shell指令碼編程之if語句學習筆記_linux shell

來源:互聯網
上載者:User

我不是研究linux下的東西的,所以這裡只對shell指令碼的用法做一個介紹,把我自己在使用過程中出現的問題記錄下來,同時也是寫下一些shell指令碼文法的規則,方便以後查看。先來學習一下條件陳述式if的用法,通過這一個簡單的文法來說明一下shell指令碼編程時候的東西。

複製代碼 代碼如下:

#!/bin/sh
echo "please input text1"
read text1
echo "please input text2"
read text2
#判斷字串等或者是不等只有一個等號
if test $text1 = $text2
then
echo "text1 equals text2"
else
echo "text1 not equals text2"
fi

#判斷字串是否為空白,這裡的判斷記得在$text1倆邊加上雙引號
if [ -z "$text1" ]
then
echo "text1 is null"
fi
if [ -n "$text1" ];then
echo "text1 is not null"
fi

#算術比較 text1和text2中的內容只能是數字
if [ "$text1" -eq "$text2" ];then
echo "equal"
elif [ "$text1" -gt "$text2" ];then
echo "great"
elif [ "$text1" -le "$text2" ];then
echo "little and equals"
fi

echo "input a file or not file"
read file
#判斷是檔案還是目錄
if [ -d $file ];then
echo "$file is a directory"
elif [ -f $file ];then
echo "$file is a file"
fi
#判斷檔案的大小是否為空白
if [ -s $file ];then
#echo -n是為了去掉分行符號
echo -n "$file'size is not null"
fi

#判斷檔案的讀寫權限
if [ -f "$file" ];then
 if [ -r "$file" ];then
 echo "read"
 fi
 if [ -w "$file" ];then
 echo "write"
 fi
 if [ -x "$file" ];then
 echo "exe"
 fi
fi

exit 0

我們一點點的來分析一下這個程式,第一行是一個特殊的備註陳述式,在linux的shell下,使用#作為注釋,所以如果你想注釋東西就要以#開頭,第一行的備註陳述式是告訴shell執行這個shell指令碼的時候使用的是/bin/sh這個目錄下的shell。接著使用echo命令來輸出一行語句,echo後邊的字串最好用雙引號引起來,以後凡是字串最好都用雙引號引起來,這可以避免一些很難尋找到的bug,echo後邊如何加上-n選項,則代表語句輸出以後是不換行的。接著是read命令,這個命令的作用是讀取輸入到變數text1中,在shell指令碼中,我們使用變數的時候不需要預先定義,用的時候直接這樣用就可以了。接下來就說到了我們本篇部落格要說明的if條件陳述式了,這個if的文法是if..then..elif..then..else..fi具體的看看代碼,代碼中已經有了體現,在c語言中我們使用if來判斷的時候都是將判斷語句寫在括弧中的,這裡的判斷是使用test命令來判斷,你把它理解為在小括弧中一樣就可以了,test的判斷可以是對字串的判斷,對數值的判斷,對檔案目錄等的判斷,這個test可以用[符號來代替,這就是在程式的後邊沒有使用test而是使用[號的原因,[的判斷最後要以]號結尾,判斷語句寫在中括弧中,因為[代表的就是test,所以[和後邊的判斷條件有空格。接下來說回來test可以判斷的類型,代碼中顯示對字串的判斷,注意我們判斷text1和text2相等的時候用的是一個等號,大家c語言習慣了不要忘記是一個等號,對變數的取值採用的是在變數前邊加了$符號,這樣就獲得了變數的值了。同時也要加上雙引號,你不加也許發現不了錯誤,但是如果輸入是空,也就是直接敲下了斷行符號鍵,這個時候判斷就成了if test = text2,test後邊沒有東西當然不對了,如果加上雙引號是這樣的if test "" = text2,這樣就不會出錯了。其他的關於一些選項,例如-z、-n、-gt、-f、-r等等這些東西每一個都是英文單詞的簡寫,很簡單略過!接下來運行shell程式,使用chmod +x命令賦予可執行檔許可權,然後運行,一切ok!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.