Estou fazendo algum script bash e agora recebi uma chamada variável source
e uma matriz chamada samples
, assim:
source='country'
samples=(US Canada Mexico...)
como eu quero expandir o número de fontes (e cada fonte tem seus próprios exemplos), tentei adicionar alguns argumentos para fazer isso. Eu tentei isso:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
mas quando eu executei meu script source countries.sh country
, não funcionou. O que estou fazendo de errado?
$1="country"
vs$1 = "country"
Respostas:
Não se esqueça dos espaços:
fonte
samples="US Canada Mexico..."
depois de introduzir a criação da matriz antessamples=(US Canada Mexico...)
?if [ "$1" = "country" ]; then
.Você pode usar os operadores "=" ou "==" para comparação de cadeias de caracteres no bash. O fator importante é o espaçamento entre parênteses. O método adequado é que os colchetes contenham espaçamento interno e os operadores contenham espaçamento ao redor. Em alguns casos, diferentes combinações funcionam; no entanto, o seguinte pretende ser um exemplo universal.
Além disso, observe que colchetes duplos são tratados de maneira ligeiramente diferente em comparação com colchetes simples ...
Espero que ajude!
fonte
Parece que você deseja analisar os argumentos da linha de comando no seu script bash. Eu pesquisei isso recentemente eu mesmo. Me deparei com o seguinte, que acho que o ajudará a analisar os argumentos:
http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/
Adicionei o trecho abaixo como um tl; dr
./script.sh -t test -r servidor -p senha -v
fonte