2013-02-08 19 views
0

我有一個測試腳本,需要讀取變量'LAB'並通過電子郵件發送正確的公司。 我看了,但找不到任何工作。

有什麼想法?

#! 
# 
LAB=3 
# 
if [ "$LAB" = "$1" ];then 
    echo "Got Zumbrota" && ./mailZ 
fi 
# 
if [ "$LAB" = "$2" ];then 
    echo "Got Barron" && ./mailB 
fi 
# 
if [ "$LAB" = "$3" ];then 
    echo "Got Stearns" && ./mailS 
fi 
+0

將shebang更改爲'#!/ bin/bash -x'並查看輸出。如果您正在比較數字,請閱讀[本頁](http://tldp.org/LDP/abs/html/comparison-ops.html) – 2013-02-08 20:01:08

+2

'「$ 3」'是傳遞給您的腳本的第三個參數「3」是值3. – 2013-02-08 20:18:10

回答

1

如果bash腳本,與

#!/bin/bash 

啓動文件,並使用-eq整數比較,因爲LAB是在腳本的整數

if [ $LAB -eq $1 ] 
+1

'$ 1'不是值'1',而是它的函數/腳本的第一個參數。使用'[$ LAB -eq 1]'。而且它更好地使用內建的[[''than'['。即'if [[$ LAB -eq 1]]' – 2013-02-08 20:07:17

+0

@Fredrik歡迎您編輯我的答案。 。 :) – 2013-02-08 20:11:42

+0

至少在更新版本的bash中,'test,[[...]和]都是內建的。 – William 2013-02-08 20:36:00

1

這些級聯的if語句可以縮寫爲一個案例聲明:

case "$LAB" in 
1) echo "Got Zumbrota" && ./mailZ 
    ;; 
2) echo "Got Barron" && ./mailB 
    ;; 
3) echo "Got Stearns" && ./mailS 
    ;; 
*) echo "don't know what to do with $LAB" 
    ;; 
esac