2014-06-23 3 views

Répondre

0

Le problème est que le shell effectue normalement une seule passe de substitution. Vous pouvez forcer un second passage avec eval, mais ceci est évidemment accompagné des avertissements de sécurité habituels (n'évaluez pas les entrées non vérifiées de l'utilisateur, etc.). Bash a diverses constructions pour éviter eval.

0

Vous pouvez utiliser eval

eval echo \$ANIMAL$i 
1

Vous êtes probablement mieux d'utiliser un tableau au lieu de ANIMAL0 et ANIMAL1. Quelque chose comme ça peut-être?

#!/bin/bash 

animals=("Tiger" "Lion") 

for animal in ${animals[*]} 
do 
    printf "Hey, ${animal} \n" 
done 

En utilisant eval vous avoir des ennuis sur la route et n'est pas la meilleure pratique pour ce que vous essayez de faire.

+0

Merci j'ai appris une autre bonne méthode. –

+0

Eh bien, si vous finissez par utiliser cette méthode à la place s'il vous plaît marquer comme la bonne réponse. A part ça, heureux d'aider :) – Semirix

Questions connexes