J'ai une commande stockée dans une variable. Imaginons que la variable $i
ait la valeur:
cat -nT index.php |grep 'someregex'
Lorsque j'essaie d'exécuter la variable ci-dessus en la tapant, $i
elle échoue car le shell tente d'exécuter la variable entière en une seule commande. J'ai également essayé d'utiliser eval($i)
et de mettre des $i
backticks.
Comment puis-je faire exécuter le shell $i
comme s'il s'agissait d'une commande? Et pourquoi ne fonctionne-t-il pas de la même manière que.
$i='echo hi'; $i
Est-ce parce que je devais en quelque sorte pirater les guillemets simples? (Parce que vous ne pouvez pas les imbriquer.) Actuellement, ma solution est
echo $i > /foo; . /foo
Mais je ne veux pas avoir créé un fichier juste pour cela, seulement pour le supprimer plus tard.
Ce que je veux dire par «j'ai piraté les guillemets simples, c'est que j'ai fait:
$i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"