web-dev-qa-db-fra.com

Comment afficher une valeur avec zenity?

J'essaie de calculer l'engourdissement d'Euler. mais j'ai du mal à afficher le résultat. Voici ce que j'ai:

#Using a switch an case

"Euler's Number")
szAnswer=$(zenity --info --text "Enter a number")
result = "(1+1/$szAnswer)^$szAnswer" | bc -l
zenity --info --text "Euler's Numb: $result"

Je peux entrer un nombre et tout, mais quand il s'agit de me donner le résultat de sortie, il reste juste vide. Toute aide est la bienvenue.

3
escobarveras

Le problème est la ligne result = "(1+1/$szAnswer)^$szAnswer" | bc -l. Ça lit:

  • exécuter la commande result avec les paramètres = et "(1+1/$szAnswer)^$szAnswer"
  • connecter le flux stdout de la commande result au flux bc de la commande stdin

Vous vous demandez probablement pourquoi result est une commande dans ce cas. En effet, les affectations de variables dans les scripts Shell sont effectuées sans espaces séparant le nom de variable et la valeur affectée. Vous voulez également envoyer "(1+1/$szAnswer)^$szAnswer" à stdin de la commande bc -l, Vous avez donc besoin de quelque chose capable d'écrire dans stdout

Ce qu'il faut faire c'est

result=$( echo "(1+1/${szAnswer})^${szAnswer}" | bc -l )`

Vous avez maintenant la variable result affectée à la sortie du pipeline echo "(1+1/${szAnswer})^${szAnswer}" | bc -l. La structure $(...) est appelée substitution de commande et est généralement utilisée lorsque la sortie de la commande doit être réutilisée à la place de la commande elle-même.

3