Shell impossible d'affecter une variable

[Résolu/Fermé]
Signaler
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
-
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
-
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

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 554
Salut,

Voici la syntaxe (pas des espaces avant et après le signe égal)
variable=$(commande)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 308
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.
Messages postés
154
Date d'inscription
dimanche 2 mai 2010
Statut
Membre
Dernière intervention
1 mai 2013
4
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.
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 308
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.