En el proceso de escribir un script de shell, me encontré con un problema con la siguiente declaración if / else que se encuentra en algún lugar en el medio del script:
if [ $act -eq "add" ]
then
read - "add or update: " $comm
git commit -m "$comm $file"
else
git commit -m "$act $file"
fi
El error de retorno es:
./gitup: line 13: [: add: integer expression expected
y luego continúa con el resto del guión. ¿Cómo puedo hacer que el segmento if evalúe / compare la variable con una entrada de cadena en lugar de un entero? se requirió un error diferente al usar "! =" entre otras cosas que probé.
bash
shell-script
bash-scripting
tony_perkis666
fuente
fuente
[[]]
prueba es una construcción específica de Bash, y este ejemplo funciona igual de bien con POSIX[]
como se usa en la pregunta. Si el intérprete se da explícitamente como#!/bin/bash
o similar,[[]]
se puede usar sin problemas (y creo que es un poco más rápido que la alternativa en Bash , no es que sea un cuello de botella de todos modos), de lo contrario uno debería quedarse[]
. Si uno no necesita detalles específicos de Bash, el script se ejecutará un poco más rápido, por ejemplo, en Dash. Y POSIX asegura la portabilidad inherente.Este método también funcionaría. Muy similar a la respuesta de @ Guru, pero elimina la necesidad de corchetes dobles.
fuente