Chodzi o narzędzie "test" uniksowe, wywoływane również jako "[", lub jego wariant składni powłoki [[…]]. W przypadku pytań dotyczących testowania oprogramowania i konfiguracji użyj tagu „testing”.
Powiedzmy, że mamy 2 liczby całkowite w skrypcie bash: value1=5 value2=3 Dlaczego więc musimy używać podwójnych cudzysłowów w przypadku testu? Na przykład: if [[ "$value1" -eq "$value2" ]] Dlaczego nie skorzystać z poniższych? if [[ $value1 -eq $value2 ]] Dla mnie podwójne cytaty nie mają żadnego sensu.
Podczas pisania skryptów zazwyczaj piszę ifs z następującą składnią, ponieważ łatwiej mi zrozumieć, że to, co nastąpi później, nie jest prawdą. if [ ! "$1" = "$2" ]; then Inni twierdzą, że sposób poniżej jest lepszy if [ "$1" != "$2" ]; then Chodzi o to, kiedy pytam, dlaczego i …
Mam następujący ifblok w skrypcie bash: if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi Wykonanie skryptu nie wchodzi do mojego ifbloku, mimo że $PACKAGENAMEjest równe kakadu-v6_4-00902C. Co ja robię źle?
Kiedy powinienem używać -eqvs =vs== na przykład [[ $num -eq 0 ]] [[ $num = 'zzz' ]] Zauważyłem wzorzec używania -eq(i -neitp.) Liczb i =ciągów znaków. Czy jest ku temu powód i kiedy powinienem go użyć==
Używam bash na Linuksie. Odnoszę sukces z następujących instrukcji if, ale czy to nie powinno zwrócić kodu błędu? if [[ ■ = [⅕⅖⅗] ]] ; then echo yes ; fi Kwadrat NIE jest równy żadnemu ze znaków, więc nie rozumiem, dlaczego dostaję kod sukcesu. Ważne jest dla mnie zachowanie podwójnych …
W Bash dwie liczby całkowite można porównać za pomocą wyrażenia warunkowego arg1 OP arg2 PO jest jednym -eq, -ne, -lt, -le, -gt, i -ge. Te arytmetyczne operatory binarne zwracają wartość true, jeśli arg1 jest odpowiednio równy, nie równy, mniejszy, mniejszy lub równy, większy niż lub większy niż lub równy arg2 …
Korzystam z poniższego skryptu, aby przejść dwa dni wstecz, gdy skrypt uruchamia się o dwa dni w roku, a także sprawdzam pierwszy i drugi dzień każdego miesiąca i cofam się o dwa dni wstecz. if [$month="01"] && [$day="01"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [$month="01"] && [$day="02"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else …
Czy dla wersji Bash wcześniejszych niż „GNU bash, wersja 4.2” istnieją równoważne alternatywy dla -vopcji testpolecenia? Na przykład: shopt -os nounset test -v foobar && echo foo || echo bar # Output: bar foobar= test -v foobar && echo foo || echo bar # Output: foo
Załóżmy, że chcę porównać gccwersję, aby zobaczyć, czy system ma zainstalowaną wersję minimalną, czy nie. Aby sprawdzić gccwersję, wykonałem następujące czynności gcc --version | head -n1 | cut -d" " -f4 Wynik był 4.8.5 Napisałem więc proste ifstwierdzenie, aby sprawdzić tę wersję pod kątem innej wartości if [ "$(gcc --version …
Zauważyłem, odpowiadając na inne pytanie, testi [są to różne pliki binarne, ale strona [podręcznika się wyświetla test. Czy oprócz wymogu zakończenia ]jest jakaś różnica? Jeśli nie, to dlaczego oddzielają pliki binarne zamiast być dowiązaniami symbolicznymi? (Są również bashwbudowane i bashnie wykazują żadnej różnicy).
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.