cela fonctionne pour moi:
CMD="ls -la" $CMD
alors que cela échoue toujours:
CMD="sed -e 's|abc|abc|g' file" $CMD
avec le message d'erreur:
sed: -e expression #1, char 1: unknown command: `''
C'est parce que lorsque vous entrez la command sur la command line, le shell exécute "expansions" dessus. La dernière étape est "Removing Quote", mais elle ne supprime que les devis qui ne résultent d'aucune extension. (Voir EXPANSIONS in man bash
pour plus de détails.) Ici, les guillemets font partie de l'expansion des variables, de sorte qu'ils ne sont pas supprimés.
Vous pouvez entrer la substitution sans guillemets pour la faire fonctionner:
cmd='sed -es|abc|abc|g file' $cmd