Cela marche-
$ x='grep a' $ echo ab | $x ab
Ce n'est pas …
$ x='grep a | grep b' $ echo ab | $x grep: |: No such file or directory grep: grep: No such file or directory grep: b: No such file or directory
Il apparaît dans ce dernier cas, grep a | grep b
grep a | grep b
est vu comme une seule command, ie grep a \| grep b
grep a \| grep b
.
Comment get le deuxième exemple sans modifier x
?
Lorsque vous voulez exécuter des variables contenant du code, vous souhaiterez souvent utiliser la command eval
. Cela va étendre le contenu de la variable afin qu'ils puissent être exécutés.
$ x='grep a | grep b' $ echo ab | eval $x ab
L'utilisation d'eval est souvent déconseillée, alors faites attention, voyez ce BashFAQ intitulé: La command Eval et les problèmes de security pour plus d'exemples!
Ah, je l'ai compris après quelques expérimentations- alias
utilisation –
$ x='grep a | grep b' $ alias y=$x $ echo ab | y ab
S'il vous plaît, postz d'autres façons de le faire-je serais intéressé par des alternatives.