GNU/Linux >> Znalost Linux >  >> Linux

Bash:Chyba syntaxe poblíž neočekávaného tokenu `}'?

Zkoušel jsem použít toto:

$ if [$a == 1] then { echo 'yes'; } fi;

ale dostávám chybu:

-bash: syntax error near unexpected token `}'

Jaký je správný formát? Zkusil jsem několik neúspěšně.

Přijatá odpověď:

[ je jen další postava, podle bashe; není to samovymezující. Takže kolem [ musíte umístit mezery a ] . I když by bylo lepší použít [[ a ]] .

A příkaz následující if (ano, [ je příkaz) musí být ukončen znakem ; nebo nový řádek.

Nakonec == (což není posix, FWIW; posix preferuje = ) je řetězcová rovnost, nikoli číselná rovnost.

Takže jste možná mysleli:

if [[ $a -eq 1 ]]; then echo yes; fi

Ale můžete místo toho použít aritmetické vyhodnocení:

if ((a == 1)); then echo yes; fi

(V aritmetickém vyhodnocení je rovnost == a nepotřebujete $ před názvy proměnných. Vím, že je to matoucí.)

Další informace o [ :help test . O [[ :help [[ (který staví na test ). O (( :help let . O bash :man bash


Linux
  1. Naučte se zpracování chyb Bash na příkladu

  2. Chyba:Kontrola šíření DNS Neshoda tokenů [vyřešeno]

  3. [ :Neočekávaný operátor v programování shellu

  1. Bash ignoruje chybu pro konkrétní příkaz

  2. Chyba syntaxe:neočekávaný konec souboru (očekává se tedy)

  3. Chyba syntaxe poblíž neočekávaného tokenu 'then'

  1. Zpracování chyb ve skriptech Bash

  2. Více logických operátorů ((a || B) &&C) a „chyba syntaxe blízko neočekávaného tokenu“?

  3. Chyba skriptu Bash:Očekává se celočíselný výraz?