2013-02-17 37 views
5

içinde if deyimindeki bir işleve geçirme Bağımsız değişkenleri if deyimindeki bir işleve iletmeye ve sonra işlevin ne döndüğünü değerlendirmeye çalışıyorum (bash). Aldığım sonuç yanlış. Bunu nasıl düzgün yapıyorsun?Bağımsız değişkenleri bash

#!/bin/bash 

foo() { 
    if [ $1 = "zero" ]; then 
     echo "0" 
    else 
     echo "1" 
fi 
} 

arg="zero" 
if foo $arg -eq 0 ; then 
    echo "entered 0" 
else 
    echo "entered something else" 
fi 

arg="blah" 
if foo $arg -eq 0 ; then 
    echo "entered 0" 
else 
    echo "entered something else" 
fi 

Değil istenilen sonuçları:

[email protected]:~/work$ ./test.sh 
0 
entered 0 
1 
entered 0 

şimdiden teşekkürler. ~ Chris

cevap

7

yapabilirsiniz ya return İşlevinizden bir sonuç veya bu enerjiyi yakalamak için $() kullanın:

... sen ne yapmak istediğini
if [ $(foo $arg) -eq 0 ] ; then 
+0

Büyük bir şey istediğiniz gibi görünüyor! – user1117603

0

emin değil

Sizin foo() fonksiyonu daima döner Başarı ile return kullanın.

foo() işlevinize ikinci ve üçüncü bir -eq 0 parametresi geçirirsiniz, ancak kullanılmazlar. Çıkış durumunu kontrol etmek ister misiniz? Bu sadece if foo $arg; then ..; fi.

2

0 veya 1 eko için işlevinize ihtiyacınız olduğundan emin misiniz?

foo() { 
    if [ $1 = "zero" ]; then 
    return 0 
    else 
    echo 1 
    fi 
} 

# Or even just simply foo() { [ $1 = "zero ]; } 

arg="zero" 
if foo $arg; then 
    echo "entered 0" 
else 
    echo "entered something else" 
fi 

arg="blah" 
if foo $arg; then 
    echo "entered 0" 
else 
    echo "entered something else" 
fi 
İlgili konular