Shell impossible d'affecter une variable

Résolu/Fermé
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 - 9 juin 2011 à 21:13
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 12 juin 2011 à 20:52
Bonjour à tous,

J'ai une question (bête) mais je bloque depuis un petit moment et je m'arrache les cheveux...
Sur un ubuntu j'ai installé imagemagick un logiciel qui permet grâce aux lignes de commandes de modifier des images. Je veux récupérer la hauteur d'origine avant la modification de l'image. Après des recherches sur internet j'ai trouvé que c'est
identify -format "%wx%h" <votre image>

Je teste la commande sur la console le résultat est ok.
Maintenant je veux l'intégré dans un script shell.

J'en ai besoin dans une variable car je la place dans une boucle for.
Je fais donc
$height= identify -size '%h' $photo
    	                   echo "$height"  // pour tester que la variable est ok

Le hic c'est que je tombe sur une erreur = : commande introuvable ou erreur identify commande inconnue

L'erreur vient forcement de ce 2 lignes car si je les retire mon script fonctionne.

Je vous remercie d'avance si vous avez une idée pour me dépanner.

Cordialement

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
9 juin 2011 à 21:19
Salut,

Voici la syntaxe (pas des espaces avant et après le signe égal)
variable=$(commande)
1
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
10 juin 2011 à 09:29
pour expliquer succintement, en bash, on affecte les variables sans "$" mais on les appel avec.
la commande $() te permet de convertir la sortie standard d'une commande en chaine de caractères lisible par le script.
0
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 4
10 juin 2011 à 22:32
Bonjour à vous deux,

Tout d'abord merci pour vos réponses. Elle m'ont effectivement permis de résoudre mon problème. J'ai fait height='identify -format %h "$photo"' et hop

Par contre à noté que les '' ne sont pas ceux de la touche 4 même s'il ressemble visuellement. Je ne sais pu comment ça s'appelle mais je sais que ça sert a exécuter ce que je lui demande dans un sous-shell et le résultat m'est renvoyer dans le shell courant. Enfin c'est ce que j'ai compris.

Encore merci à vous deux.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 juin 2011 à 20:52
les apostrophe, dont tu parles doivent être ceux de la touche 7.
Ils sont équivalent à $(). Il parait que $() est recommandé par rapport à ta notation, donc :
height=$(identify -format %h "$photo")
C'est un peu plus clair.
0