Estoy haciendo un script bash y ahora recibí una llamada variable source
y una matriz llamada samples
, así:
source='country'
samples=(US Canada Mexico...)
Como quiero expandir el número de fuentes (y cada fuente tiene sus propias muestras) intenté agregar algunos argumentos para hacer esto. Intenté esto:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
pero cuando ejecuté mi script source countries.sh country
no funcionó. ¿Qué estoy haciendo mal?
$1="country"
vs.$1 = "country"
Respuestas:
No te olvides de los espacios:
fuente
samples="US Canada Mexico..."
después de introducir la creación de matriz antessamples=(US Canada Mexico...)
?if [ "$1" = "country" ]; then
.Puede usar operadores "=" o "==" para la comparación de cadenas en bash. El factor importante es el espacio entre los corchetes. El método apropiado es que los corchetes contengan espacios dentro y los operadores contengan espacios alrededor. En algunos casos, funcionan diferentes combinaciones; sin embargo, lo siguiente pretende ser un ejemplo universal.
Además, tenga en cuenta que los corchetes dobles se manejan de manera ligeramente diferente en comparación con los corchetes individuales ...
¡Espero que eso ayude!
fuente
Parece que está buscando analizar argumentos de línea de comandos en su script bash. He buscado esto recientemente yo mismo. Encontré lo siguiente que creo que lo ayudará a analizar los argumentos:
http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/
Agregué el fragmento a continuación como tl; dr
./script.sh -t prueba -r servidor -p contraseña -v
fuente