Puesto que usted es nuevo en secuencias de comandos, que pueden no ser conscientes de que es un [[
del bash. Puede que ni siquiera sepas qué es un bashismo, pero las dos respuestas dadas hasta el momento te están guiando por un camino hacia un futuro de guiones atrofiado promoviendo su uso.
Para comprobar si una variable coincide con una cadena en cualquier sabor de shell de Bourne, puede hacer test $V = 14
Si desea comparar números enteros, use test $V -eq 14
. La única diferencia es que este último generará un error si $ V no parece un entero. Hay buenas razones para citar la variable (test "$V" = 14
), pero las comillas a menudo son innecesarias y creo que son la causa raíz de una confusión común, ya que "14"=="14"
es idéntico a "14==14"
donde es más obvio que '==' no se está utilizando como un operador.
hay varias cosas a tener en cuenta: utilizar un único '=' en lugar de '==' porque no todas las conchas reconocen '==', el comando [
es idéntica a test
pero requiere un argumento final de ]
y muchos sh las pautas de codificación recomiendan usar test
porque a menudo genera un código más comprensible, [[
solo es reconocido por un número limitado de shells (este es su problema principal, ya que su shell no parece reconocer [[
y está buscando un comando de ese nombre. es sorprendente si su shebang realmente especifica /bin/bash
en lugar de /bin/sh
).
Por cierto, sin los espacios, esto no está comparando '14' a' 14', está comprobando si la cadena '14 == 14' está vacía. Daría exactamente el mismo resultado con '[[" 11 "==" 99 "]]', ya que esa cadena tampoco está vacía. –