Programowanie > Bash, skrypty powłoki

Bash i znaki specjalne

(1/2) > >>

p.nowak:
Witam,
jak to jest z wyświetlaniem znaków specjalnych w terminalu? Znalazłem sobie w sieci ebooka sprzed kilku lat i w jednym z przykładów podano iż komenda echo nie wyświetli znaku wykrzyknika ! i wyrzuci błąd "bash: !: event not found error" gdy w napiszemy polecenie
$ echo "cannot include exclamation - ! within double quotes". Uruchomiłem to polecenie pod centosem 8 i działa bez problemu. Coś się zmieniło w tej kwestii?
Z góry dziękuje za wyjaśnienie.
 

parana:
Napisz sobie:

--- Kod: ---
echo !10
--- Koniec kodu ---
co Ci wyszło? Rozumiesz co się dzieje? Teraz inne cyfry po !? Co działa?

a napisz

--- Kod: ---
echo \!10
--- Koniec kodu ---
jaki wynik?

I jeszcze jedno do pomyślenia:

--- Kod: ---
echo "Ala ma kota !!"
--- Koniec kodu ---

oraz

--- Kod: ---
echo "!-"
--- Koniec kodu ---

beaker:
Autor pytał o coś zupełnie innego.
Wg poradnika nie można użyć wykrzyknika pomiędzy cudzysłowami gdyż zwróci to błąd "bash: !: event not found error".
U autora jednak ten błąd się nie pojawia.
U mnie zresztą też:

--- Kod: ---
$ echo "cannot include exclamation - ! within double quotes"
cannot include exclamation - ! within double quotes
--- Koniec kodu ---

Zapewne chodzi o ten poradnik: https://books.google.pl/books?id=yHc5DwAAQBAJ&pg=PA11&lpg=PA11&dq=echo+%22cannot+include+exclamation+-+!+within+double+quotes&source=bl&ots=BZjIy9p8ZC&sig=ACfU3U2rb-YhnI9bXsehnPgLQX_NbrYZKg&hl=pl&sa=X&ved=2ahUKEwilt5G8x4LnAhWwlYsKHXcJAs0Q6AEwBHoECAkQAQ#v=onepage&q=echo%20%22cannot%20include%20exclamation%20-%20!%20within%20double%20quotes&f=false

Prawdopodobnie jest błąd w tym przykładzie i miał on brzmieć tak:

--- Kod: ---
$ echo "cannot include exclamation !- within double quotes"
--- Koniec kodu ---

p.nowak:
Dziękuję wszystkim za cenne spostrzeżenia. Nie znałem zastosowania ! w bashu. Teraz już wiem że stanowi znak specjalny w połączeniu z innymi znakami i można go zniwelować backslashem. W przykładzie z ebooka nie rozumiałem dlaczego nie wywala mi błędu. Jeszcze muszę doczytać czym różni wyświetlanie się ciągów wyrażeń z użyciem cudzysłowów i bez :)

parana:
No i nie zrobiłeś o to co porosiłem a tak byś wiedział że:

! - to desygnator zdarzeń a zostosowanie go w poleceniu w Bash umożliwia rozwinięcie desygnatora zdarzeń z historii.
Wpisz
--- Kod: ---
history
--- Koniec kodu ---
otrzymasz listę z numerami do zdarzeń

Więc w moich przykładach podanych wyżej:
!  rozpoczyna podstawianie historii
!!  poprzednie polecenie
!n  polecenie nr n z historii
!-n n-te polecenie wstecz od bierzącego
!tekst  ostatnie polecenie zaczynające się od tekst

więc faktycznie ! nie ma żadnego zastosowania w bash i tylko możesz wstawiasz go po ty by następnie go  skasować - ot taki znak do zabawy

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej