J'ai un répertoire dit "/ dir". Dans ce répertoire j'ai des fichiers avec le nom arg1_config.tcl
, arg2_config.tcl
, arg3_config.tcl
. Il peut y avoir plus de fichiers avec la même extension. J'essaie de générer dynamiquement des alias pour arg1, arg2 et arg3 dans ce cas et ci-dessous est mon code pour le même.Créer un alias dans un script shell en utilisant une variable
foreach i (`ls <path>/dir/*.tcl`)
set app = `echo $i | sed -e 's/.*\///g' | sed 's/_config.tcl//g'`
echo "app is $app"
alias $app 'run -app $app' # run is an internal script that takes arg1/2/3 as a switch
echo "alias $app 'run -app $app'"
end
Quand je Source ce fichier il imprime
app is arg1
alias arg1 'run -app arg1'
app is arg2
alias arg2 'run -app arg2'
app is arg3
alias arg3 'run -app arg3'
Cependant quand je lance which arg3
il dit aliasé pour exécuter -app application $ et la valeur de l'application est toujours la dernière valeur en quelque sorte après avoir quitté la-à-dire la boucle foreach arg3 dans ce cas. Je ne suis pas en mesure de créer des alias tels que les messages d'impression ci-dessus, i.e.:
alias arg1 'run -app arg1'
alias arg2 'run -app arg2'
alias arg3 'run -app arg3'
L'utilisation de guillemets simples empêche l'extension de la variable. Passer aux guillemets doubles –
Merci Glenn! C'était le problème. Passer à des guillemets a aidé – Rancho