2013-02-08 2 views
0

과 비교합니다. 변수 'LAB'을 읽고 올바른 회사에 전자 메일을 보내야하는 테스트 스크립트가 있습니다. 나는 보았지만 아직 효과가있는 것을 찾을 수 없습니다.

의견이 있으십니까? 이 bash는 스크립트 경우

#! 
# 
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)를 통해 읽으십시오. –

+2

' "$ 3"'이 (가) 스크립트 "3"에 전달 된 세 번째 인수입니다. –

답변

1

#!/bin/bash 

사용하여 파일을 시작하고 정수 비교 -eq를 사용 LAB 때문에 이러한 진술 경우 계단식

if [ $LAB -eq $1 ] 
+1

'$ 1'은 값 '1'이 아니며 대신 함수/스크립트에 대한 첫 번째 인수입니다. '[$ LAB -eq 1]'을 사용하십시오. 그리고 내장 함수'[[''[''. 예 : if [[$ LAB-eq 1]] –

+0

@Fredrik 내 대답을 편집 할 수 있습니다. . :) –

+0

적어도 bash의 새로운 버전에서는'test, [...]와 [[...]]'는 모두 내장되어 있습니다. – William

1

스크립트의 정수이다 사례 명세서로 요약 될 수 있습니다.

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