Uczę się basha.
Chciałbym zrobić prosty skrypt, który bez podania argumentów pokazuje jakiś komunikat. A kiedy podaję liczby jako argumenty, zależnie od wartości, robi to jedno lub drugie.
Chciałbym również poznać sugestie dotyczące najlepszych podręczników online dla początkujących w bash
Dzięki
> /dev/null
i / lub2> /dev/null
później, aby wysłać jego standardowe wyjście i / lub standardowe strumienie błędów w zapomnienie.exit 1
). Istnieją inne konwencje dotyczące kodów powrotu / wyjścia, które można szybko znaleźć w Internecie, ale ważne jest, aby nie było 0, co wskazuje na sukces.Jeśli interesuje Cię tylko bailing, jeśli brakuje określonego argumentu, podstawianie parametrów jest świetne:
źródło
Przykład
Wynik
Detale
-z jest operatorem jednoargumentowym dla długości łańcucha równej zero.
$*
to wszystkie argumenty. Cudzysłowy są dla bezpieczeństwa i zawierają wiele argumentów, jeśli są obecne.Użyj
man bash
i wyszukaj ( klawisz / ) „jednoargumentowy”, aby znaleźć więcej takich operatorów.źródło
-z
jako mizzingStara, ale mam powód, aby teraz zmienić odpowiedź dzięki pewnym wcześniejszym nieporozumieniom:
Powoduje to echo „Coś”, jeśli nie ma argumentu pozycyjnego $ 1. Nie sprawdza jednak, czy $ 1 zawiera określone informacje.
źródło
$#
jest jawnie całkowitą liczbą argumentów; będzie to albo „0”, a powtórzysz „coś”, nawet jeśli nie ma argumentów, albo będzie to jakaś liczba dodatnia i poprawnie powtórzysz „coś”. Ale samo sprawdzenie nigdy nic nie da, niezależnie od danych wejściowych lub braku danych wejściowych, których używasz - zawsze zgłosi, że$#
zawiera wartość. Jest to więc całkowicie błędne i nigdy nie będzie działać zgodnie z twierdzeniami.echo $#
jak zawartości /tmp/test.sh skryptu, a następnie uruchomić go w katalogu / bin / bash, jak / bin / sh (lub / bin / dash i cokolwiek innych implementacjach powłoki masz dostępne./tmp/test.sh
Echo „0” konsola, zgodnie z wolą/bin/dash /tmp/test.sh
. Z drugiej strony,/tmp/test.sh foo
/tmp/test.sh first second
man bash
z rozdziałem „Parametry specjalne”, „Powłoka traktuje kilka parametrów w specjalny sposób. Do tych parametrów można się odwoływać tylko; przypisywanie do nich jest niedozwolone.” I „# Interpretacja do liczby parametrów pozycyjnych w postaci dziesiętnej”. Jest to również wymagane przez POSIX, jak opisano w pubs.opengroup.org/onlinepubs/9699919799/utilities/ ...