Próbuję wykonać prostą kontrolę stanu, ale wydaje się, że nie działa.
Jeśli $#
jest równe 0
lub większe niż 1
wtedy, przywitaj się.
Wypróbowałem następującą składnię bez powodzenia:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
bash
unix
if-statement
sh
Truskawka
źródło
źródło
>
jest przekierowaniem wyjścia w sh / bash. Teraz prawdopodobnie masz plik o nazwie1
.Odpowiedzi:
To powinno działać:
Nie jestem pewien, czy jest inaczej w innych powłokach, ale jeśli chcesz użyć <,>, musisz umieścić je w podwójnym nawiasie, tak jak to:
źródło
Ten kod działa dla mnie:
Nie sądzę, że sh obsługuje „==”. Użyj „=”, aby porównać ciągi i -eq, aby porównać int.
po więcej szczegółów.
źródło
-gt
większy niż. Lub po prostu zamień to wszystko na[ $# -ne 1 ]
.Jeśli używasz kodu wyjścia bash $? jako zmienna lepiej to zrobić:
Ponieważ jeśli to zrobisz:
Lewej części OR zmienia $? zmienna, więc w prawej części OR nie ma oryginalnego $? wartość.
źródło
Czasami trzeba użyć podwójnych nawiasów, w przeciwnym razie pojawia się błąd taki jak zbyt wiele argumentów
źródło
Jeśli skrypt bash
źródło
próbowałeś czegoś takiego:
źródło
echo
s cześć nawet gdy mam jeden argument.$#
może być wartością zwracaną z pierwszego testu?Z podręcznika użytkownika Bash → 3.4.2 Parametry specjalne
Dlatego
$#
zawsze będzie to 0 lub większa liczba całkowita.Więc jeśli chcesz coś zrobić, gdy wartość
$#
jest równa 0 lub większa niż 1, musisz tylko sprawdzić,$#
czy jest1
:To używa składni:
źródło
[[ -n $A ]] && echo 1 || echo 2
I w Bash
LUB w Bash
źródło