作者 主題: 問Shell script (做validation)  (閱讀 5044 次)

0 會員 與 1 訪客 正在閱讀本文。

terryyip

  • 可愛的小學生
  • *
  • 文章數: 29
    • 檢視個人資料
問Shell script (做validation)
« 於: 2006-04-18 23:51 »
請問怎樣check一個variable是否integer?
我這樣寫,但總是不行。
我是Linux新手啊。

謝謝大家囉

代碼: [選擇]

#!/bin/bash
read -p "Enter a number: " num

if [ "$num" == [0-9] ] ; then
    echo "It is a int"
else
    echo "It is NOT a int"
fi

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
Re: 問Shell script (做validation)
« 回覆 #1 於: 2006-04-19 00:06 »
引述: "terryyip"
請問怎樣check一個variable是否integer?
我這樣寫,但總是不行。
我是Linux新手啊。

謝謝大家囉

代碼: [選擇]

#!/bin/bash
read -p "Enter a number: " num

if [ "$num" == [0-9] ] ; then
    echo "It is a int"
else
    echo "It is NOT a int"
fi


if echo "$num" | egrep -q '^[0-9]+$'

==
I am kenduest - 小州

my website: http://kenduest.sayya.org/

terryyip

  • 可愛的小學生
  • *
  • 文章數: 29
    • 檢視個人資料
問Shell script (做validation)
« 回覆 #2 於: 2006-04-21 21:45 »
原來可以這樣...
謝謝囉
-q 這個option好像抽象了一點 :lol:

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
問Shell script (做validation)
« 回覆 #3 於: 2006-04-21 23:36 »
if printf %d "$num" &>/dev/null

如果要含小數, 將 %d 改為 %f

essle9

  • 懷疑的國中生
  • **
  • 文章數: 80
    • 檢視個人資料
問Shell script (做validation)
« 回覆 #4 於: 2006-06-02 17:05 »
那請問一下 如 像kenduest 這種寫法
if echo "$num" | egrep -q '^[0-9]+$'
會把num 印出來 怎樣才能不讓他印出來
還有
若想用反向的判斷 就是當num不等於'^[0-9]+$'時
這時的正規表示要怎麼寫
像terryyip這種的邏輯寫法真的不能達到嗎

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
問Shell script (做validation)
« 回覆 #5 於: 2006-06-02 22:23 »
如果不想卡到 egrep 的結果, 可加 &>/dev/null 來解決.
要不就用 egrep -q .(這個在 sample 已經有了, 應該看不到結果才對...)

如果要反向結果, 就加個 ! 在 command line 前面:

if ! echo "$num" | egrep -q '^[0-9]+$'

essle9

  • 懷疑的國中生
  • **
  • 文章數: 80
    • 檢視個人資料
問Shell script (做validation)
« 回覆 #6 於: 2006-06-04 23:59 »
多謝 又學了一招
-q 我試過了的確不會印出來
反向的問題我一直在正規表示上繞
忘記在command前下 ! 就可以
可是....我記得在正規表示應該也可表示反向的
就是寫不出來 一直出錯