La command Execute dans la variable ne fonctionne pas pour sed

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