iT邦幫忙

DAY 5
5

快快樂樂學會讓電腦幫我做事系列 第 5

[Shell Script] Day05-2001和9527傻傻分不清楚

在瞭解如何使用 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 了!唉~我居然犯了這種笨問題~虧我寫了三個月了XD

沒關係~這也是個經驗筆記,我們把 $MY_WORD 改成 MY_WORD ,再試一次吧!記得要把 set –xv 拿掉喔,否則畫面會醜醜的!rock

對了!YA~他終於可以不會再把20019527搞混了!

今天就先醬吧!除了 字串的判斷,還多學到一招,如何做 Debug 。
(下次應該拆成兩篇的.. 偷笑

鐵人賽文章分享
上一篇 if else 判斷式
下一篇 清晰好還是朦朧好呢


上一篇
[Shell Script]Day04-if else 判斷式
下一篇
[Shell Script] Day06-清晰好還是朦朧好呢
系列文
快快樂樂學會讓電腦幫我做事27

尚未有邦友留言

立即登入留言