在瞭解如何使用 if else 來比對數字之後,當然也要知道如何比對文字。因為我們在使用 shell script 幫我們工作時,有很大一部份會使用到字串的比較,我在這三十天中的後半段以範例說明時會讓大家更明顯感受到,文字比較真的很常用!在此就先介紹一下如何做文字比較。
在瞭解如何使用 if else 來比對數字之後,當然也要知道如何比對文字。因為,我們在使用 shell script 幫我們工作時,有很大一部份會使用到字串的比較,我在這三十天中的後半段以範例說明時會讓大家更明顯感受到,文字比較真的很常用!在此就先介紹一下如何做文字比較。
文字比較相較於數字感覺就更直覺許多,為什麼呢?請往下看
if [ “$VAR” != “Pajace2001” ]; then
echo “Variable is not Pajace2001”
fi
if [ “$VAR == “Pajace2001” ]; then
echo “Variable is the same with Pajace2001
fi
是不是很簡單呢?就等於跟不等於而已!就這樣?
哈哈~很聰明喔!當然不止,不過簡單的的確就是這樣!
來看個範例吧!
#!/bin/bash
echo -n "你好!請輸入一個單字:"
read $MY_WORD
if[ “$MY_WORD” != "Pajace2001" ]; then
echo "你輸入的不是 Pajace2001 "
elif [ “$MY_WORD” == "Pajace2001" ]; then
echo "你輸入的是 Pajace2001"
else
echo "你輸入的是 $MY_WORD "
fi
什麼!!不行~怎麼會?
輸入 Pajace2001,他說我輸入的不是 Pajace2001
輸入 Pajace9527,他也說我輸入的不是 Pajace2001
到底是哪裡錯了呢?
沒關係!失敗為成功之母,我們就來 Debug 一下吧!
我們再寫 script 的過程中,尤其實剛開始真的很容易遇到很奇怪的問題(其實是我自己不懂),搞了老半天也不知道為什麼,所以,這一步就非常的重要!
我們剛剛寫的 script 加一行進去看看 set –x 這個代表會把變數展看來,讓你看清楚變數是不是我要的,若是用 set –v 這樣會先把還沒處理過的程式馬秀出來。當然,你可以用 set –xv 顯示更多的資訊。
這邊我覺得先用 set -x 應該就夠了,如果不夠,就再加上另一個功能(-v)。
#!/bin/bash
# 加上這行做 Debug 用
set -x
echo -n "你好!請輸入一個單字:"
read $MY_WORD
if [ "$MY_WORD" != "Pajace2001" ]; then
echo "你輸入的不是 Pajace2001 "
elif [ "$MY_WORD" == "Pajace2001" ]; then
echo "你輸入的是 Pajace2001"
else
echo "你輸入的是 $MY_WORD "
fi
看到了嗎?我們的變數呢?怎麼是空的?
好,我承認我判斷錯誤,再加上另一個參數 v 吧!看看結果如何!
這次資訊就多很多,看到了嗎?抓到兇手了~ read $MY_WORD!
我們把資料讀到 $MY_WORD 而非 MY_WORD 了!唉~我居然犯了這種笨問題~虧我寫了三個月了
沒關係~這也是個經驗,我們把 $MY_WORD 改成 MY_WORD ,再試一次吧!記得要把 set –xv 拿掉喔,否則畫面會醜醜的!
對了!YA~他終於可以不會再把2001和9527搞混了!
今天就先醬吧!除了 字串的判斷,還多學到一招,如何做 Debug 。
(下次應該拆成兩篇的.. )
鐵人賽文章分享
上一篇 if else 判斷式
下一篇 清晰好還是朦朧好呢