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.
Le problème est la ligne result = "(1+1/$szAnswer)^$szAnswer" | bc -l
. Ça lit:
result
avec les paramètres =
et "(1+1/$szAnswer)^$szAnswer"
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.