Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2022-01-07 15:42:06

  bakao - Użytkownik

bakao
Użytkownik
Zarejestrowany: 2020-11-15

[bash] if wyrzuca błędy

Mam taki fragment kodu:

Kod:

<------>    if [ $m1 == "Austria" ] || [ $m1 == "Belgia" ] || [ $m1 == "Czechy" ] || [ $m1 == "Dania" ] || [ $m1 == "Francja" ] || [ $m1 == "Grecja" ] || [ $m1 == "Hiszpania" ] || [ $m1 == "Holandia" ]; then
<------><------>if [ "$m1" != "Wielka Brytania" ]; then
<------><------>    m1c=`echo $m1 | tr -d " "`
<------><------>else
<------><------>    m1c=$m1
<------><------>fi
<------><------>miasto="${miasto}$m2 ($m1c)"
<------>    else
<------><------>miasto="${miasto}$m1"
<------>    fi
<------>fi

który wyrzuca mi błędy. Jak się nie trudno domyśleć, pod zmienną $m1 i $m2 pojawiają się naprzemiennie nazwy miast lub krajów. Problem jest, jeśli m1 to np. Wielka Brytania. Wtedy otrzymuję taki błąd:
./extractbyhtmlq.sh: wiersz 61: [: ==: oczekiwano operatora jednoargumentowego
Jak znów dam $mi w nawias tzn: if [ "$m1" == "Austria" ] to w ogóle nie rozpoznaje mi krajów. Co robię nie tak?

Offline

 

#2  2022-01-07 16:31:57

  mati75 - Psuj

mati75
Psuj
Skąd: default city
Zarejestrowany: 2010-03-14
Serwis

Offline

 

#3  2022-01-08 13:22:11

  bakao - Użytkownik

bakao
Użytkownik
Zarejestrowany: 2020-11-15

Re: [bash] if wyrzuca błędy

Zamieniłem == na =~ i nadal mam:

Kod:

wiersz 43: [: =~: oczekiwano operatora dwuargumentowego

jak dam $miasto w "" lub

Kod:

wiersz 43: [: za dużo argumentów

jak zostawię samo $miasto w przypadku miasta "Bielsko Biała"

Offline

 

#4  2022-01-08 16:56:36

  mati75 - Psuj

mati75
Psuj
Skąd: default city
Zarejestrowany: 2010-03-14
Serwis

Re: [bash] if wyrzuca błędy

A tak?

Kod:

if [[ $string == *"My long"* ]]; then

https://l0calh0st.pl/obrazki/userbar.png

Offline

 

#5  2022-01-08 23:26:37

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [bash] if wyrzuca błędy

bakao napisał(-a):

Mam taki fragment kodu:

./extractbyhtmlq.sh: wiersz 61: [: ==: oczekiwano operatora jednoargumentowego
Jak znów dam $mi w nawias tzn: if [ "$m1" == "Austria" ] to w ogóle nie rozpoznaje mi krajów. Co robię nie tak?

Moim zdaniem, potrzebujesz prawdziwych regexów, a nie protezy.
Bash jakoś tam obsługę regexów realizuje, ale lepiej weź Perla lub Pythona.
Czyli prawdziwe języki programowania, a nie interpreter powłoki systemowej.

Tu masz dokumentację perlre:
https://perldoc.perl.org/perlre
Przyjemnej lektury.

Pozdro
:P


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2022-01-09 00:53:32

  samu - Stały bywalec

samu
Stały bywalec
Skąd: ~/.linux/dug
Zarejestrowany: 2011-06-15

Re: [bash] if wyrzuca błędy

Kod:

[ "$string" = "string" ] 

lub

[[ "$string" == "string" ]]

Instrukcja CASE zamiast IF? 🙂


https://www.debian.org/logos/button-mini.png

Offline

 

#7  2022-01-10 20:53:42

  fnmirk - Redaktor

fnmirk
Redaktor
Zarejestrowany: 2008-02-19

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)