Shell impossible d'affecter une variable

Résolu
apprentiDev Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Voici la syntaxe (pas des espaces avant et après le signe égal)
variable=$(commande)
1
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   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.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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