Que hace ;; hacer en sh?


28

Si intento ejecutar a;;ben sh, me sale este error:

sh: <number>: Syntax error: ";;" unexpected

Si lo intento a;;;b, obtengo el mismo error, no en ;;;lugar de ;;, así que creo que eso ;;significa algo, aunque no sé qué significa.

Aquí hay un ejemplo:

$ echo A;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A;;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A; ;echo B
sh: 1: Syntax error: ";" unexpected

Aquí puede ver que cuando uso en ; ;lugar del ;;error es diferente, relacionado con el hecho de que lo usé ;sin un comando antes. ;;parece ser un operador diferente, aunque no sé a qué se aplica.


1
No puedo buscar en Google debido a ;;, y no he encontrado un engaño aquí.
EKons

3
Buscó en Google "doble punto y coma" ... stackoverflow.com/questions/16905183/…
muru

@muru Aunque no publicado aquí todavía creo.
EKons

@ ΈρικΚωνσταντόπουλος Eso es lo que SymbolHound es para symbolhound.com
Joe

Respuestas:


47

;;separa las declaraciones en una case... esacconstrucción en shells POSIX:

case foo in (a) cmd1; cmd2 ;; (b) cmd3; cmd4; esac

Para obtener información sobre un comando, puede ejecutar man that-command. Si su buscapersonas es less, puede buscar dentro de la página de manual presionando /.

Aquí, correría man shy buscaría ;;. Algunos shells admiten otros operadores para separar casedeclaraciones (como ;&en ksh93/ zsh/ bash/ mksh, &|in zsh/ mksh, ;;&in bash).


1
Acabo de publicar aquí porque creo que debería haber una pregunta así de todos modos, ya que aquí podría explicarse de una manera más clara si alguien está confundido.
EKons

2
Si hay muchos éxitos, o no puedes recordar las reglas de escape para buscar less, a veces es útil$ man bash|grep -C1 ';;'
destrabar el

No deberías tener (antes a)y b), y necesitas ;;despuéscmd4
Barmar

@Barmar, esa sintaxis es POSIX. En el shell Bourne, tenía que omitir el (hecho, pero aún no necesitaba el ;;antes esac(aunque no perjudicó).
Stéphane Chazelas

Gracias. No sabía sobre ese cambio en el shell POSIX, o que el último ;;era opcional.
Barmar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.