J'écris un script bash qui exécute chacun de ses arguments en tant que commande. Cela fonctionne pour les commandes dans my PATH
, mais pas pour les alias. Je peux appeler directement un alias dans le script, mais je ne peux pas appeler un alias qui a été passé en argument.
Le problème (je suppose) est que les alias sont développés avant les variables. Existe-t-il un moyen d'exécuter des alias à partir d'une variable?
Exemple de script:
#!/bin/bash
# File: runall
shopt -s expand_aliases
source ~/.aliases
while (( "$#" )); do
$1
shift
done
runall "echo test"
fonctionne, mais runall "myalias"
donnerunall: line 8: myalias: command not found
eval
variables?eval "echo $1"
. Dis que j'appelle./script.sh "hello;rm -rf ~
. Qu'est-ce qui est exécuté?echo hello
, suivi derm -rf ~
. C'est évidemment un exemple artificiel, mais le principe tient.eval
devant$1
travaillé, puisque je l'avais déjà faitshopt -s expand_aliases
. Merci!J'ai eu un problème similaire et j'ai réussi à résoudre mon problème en transformant mes alias en fonctions, comme décrit sur ce site , qui a fonctionné pour moi.
par exemple
à
la source