Script BASH - exécuter la commande variable et stocker le résultat

Je ne sais pas comment exécuter une commande variable et obtenir de résultat.
J'ai beaucoup de .h et .c fichiers et j'ai besoin de convertir chaque de ISO-8859 de l'UTF-8.

Je fais donc:

ls | grep "\.[ch]" | xargs myscript.sh

Et dans mon script dans la variable $1 est le nom de fichier. Maintenant, j'ai besoin d'effectuer

iconv -f ISO-8859 -t UTF-8 $1

et stocker le résultat de cela, parce que iconv imprimer sur la sortie standard stdout.

result=`iconv -f ISO-8859 -t UTF-8 $1`

echo $result 

Cela semble ne pas fonctionner, car il me donner une certaine inadéquation au lieu de convertis $1.

  • "Certains" incompatibilité? Veuillez citer le message d'erreur exact que vous obtenez.
  • Il n'est pas d'erreur. Il est srabled contenu de plusieurs fichiers, puis seulement 1$, je ne comprends pas que.
  • n'importe lequel des fichiers émis par vous ls | grep .. a des espaces dans le nom de fichier? Que va faire exploser les choses. Essayez de remplacer"$1" dans votre result=..., mais vous devrez peut-être trouver une façon de gérer les espaces dans les noms de fichier. Merci d'éditer votre question avec le juge approprié valeurs d'exemple pour 1$, ET le texte exact de brouiller le contenu. Bonne chance.
  • Si vos fichiers sont assez petits pour capturer, alors vous devez utiliser echo "$result" avec les guillemets pour préserver l'intérieur de l'espacement. Sans les guillemets, vous obtenez une seule ligne de sortie de chaque séquence d'un ou plusieurs espaces blancs réduite à un seul blanc.
InformationsquelleAutor designerrr | 2011-11-29