Pages : 1
#1 Le 19/04/2026, à 20:47
- JM3863
Guillemets et Calcul
Bonsoir
j'ai une question concernant les guillemets ou non
si je rentre le chiffre 1
Tous les tests suivants fonctionnent
Avec d'autres langages, on différenciait un champ numérique d'un champ alphanumérique
pour le numérique (If $A = 1 , pour l'alphanumérique , if $A ="1')
Quand dans un script on écrit A=1, le champ A ($A) est il numérique ou alpha ?
dans les tests les caractères lt,gt ne sont valables que pour des données numériques?
Pouvez vous m'éclairer ?
read -p "entrez Chiffre : " Chiffre
if [ $Chiffre = "1" ]
then
echo "Nombre= double guillements_un $Chiffre"
else
echo "Nombre_pas_double guillements_un $Chiffre"
fi
if [ $Chiffre = '1' ]
then
echo "Nombre= simple_guillement_un $Chiffre"
else
echo "Nombre_pas_simple_guillement_un $Chiffre"
fi
if [ $Chiffre = 1 ]
then
echo "Nombre= sans_guillements_un $Chiffre"
else
echo "Nombre_pas_sans_guillements_un $Chiffre"
fiQuestions calcul
result=$(echo "$number1 * $number2"| bc)
result=$(echo "scale=3;$number1 / $number2"| bc)
result=$(echo "scale=3;$number1 ^ $number2"| bc)
comment exprimer le nombre de décimales ?
sum2=$((sum2 /23))
comment calculer la racine carrée, cubique avec bc ou avec la formule sum2=$((sum2 /23)) ?
Merci
JM
Hors ligne
#2 Le 19/04/2026, à 21:09
- diesel

Re : Guillemets et Calcul
Ben...,
Si tu écris :
a=1
b="1"
if [ $a == $b ]
then echo "égal"
else echo "différent"
fiTu obtiendras "égal".
Cela signifie que la chaîne de caractères entrée 1 et la chaîne de caractères entrée "1" sont équivalentes.
bash est un langage essentiellement tourné vers le traitement des chaînes de caractères. Ainsi, le contenu d'un paramètre est une chaîne de caractères.
Cela étant, si les caractères sont des chiffres, bash est capable d'interpréter ces chiffres comme des nombres pour réaliser des calculs basiques (voir le man bash dans la section ARITHMETC EVALUATION).
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#3 Le 19/04/2026, à 21:18
- Watael

Re : Guillemets et Calcul
salut
if [ $Chiffre = "1" ] ceci n'est pas une comparaison arithmétique, ça compare uniquement le texte. Edit: [ $a == $b ] non plus. ![]()
par défaut (si elles ne sont pas déclarées explicitement en tant qu'entiers (declare -i varName)), les variables sont des chaînes.
en fonction du contexte (utilisation des opérateurs arithmétiques de la commande test, ou d'une évaluation arithmétique (entre parenthèses doubles)), elles seront interprétées comme un entier.
NB: une variable chaîne dans un contexte arithmétique ne lévera pas d'erreur mais sera interprétée comme valant zéro.
bash n'accepte pas de décimales, il traite uniquement des entiers.
Dernière modification par Watael (Le 19/04/2026, à 21:21)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 19/04/2026, à 21:38
- diesel

Re : Guillemets et Calcul
Je n'ai jamais écrit que [ $a == $b ] comparait des nombres. Je crois même avoir écrit : "Cela signifie que la chaîne de caractères entrée 1 et la chaîne de caractères entrée "1" sont équivalentes".
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 20/04/2026, à 06:37)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#5 Le 19/04/2026, à 22:21
- Watael

Re : Guillemets et Calcul
Je crois [...]* avoir écrit
mouais. t'as pas l'air très sûr de toi.
--
* oui, oui, c'est de la mauvaise foi du meilleur tonneau. ![]()
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 19/04/2026, à 23:24
- krodelabestiole

Re : Guillemets et Calcul
dans à peu près tous les langages informatiques, guillemets (simples ou doubles, qui ont parfois des effets différents) signifie : chaîne de caractères (texte).
pour des nombres on n'utilise pas de guillemets.
certains langages sont capables de faire la conversion implicitement, mais c'est presque toujours à éviter !
ceci dit en bash c'est différent : https://unix.stackexchange.com/question … er-in-bash
les variables ne sont pas typées.
Dernière modification par krodelabestiole (Le 20/04/2026, à 00:00)
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#7 Le 20/04/2026, à 01:31
- RaphaelG
Re : Guillemets et Calcul
Je n'arrive pas à utiliser gnome-calculator et je n'utilise que bc.
Sans la bibliothèque mathématique, voilà ce que bc peut faire :
Les 4 opérations basiques : + - * /
racine carrée : sqrt()
puissance entière : x^n (C'est l'exposant qui doit être entier ; la base peut être un nombre décimal)
2/23 avec 3 chiffres après la virgule :
~$ echo 'scale=3; 2/23' | bc
.086
~$Lorsqu'on lance bc avec la bibliothèque mathématique (-l) alors on a 20 chiffres après la virgule par défaut mais on peut en demander plus ou moins avec scale :
~$ echo '2/23' | bc -l
.08695652173913043478
~$On voit que bc n'arrondit pas au nombre supérieur mais fait une troncature.
Avec la bibliothèque mathématique, bc a, en plus les fonctions suivantes : (RTFM)
s (x)
The sine of x, x is in radians.
c (x)
The cosine of x, x is in radians.
a (x)
The arctangent of x, arctangent returns radians.
l (x)
The natural logarithm of x.
e (x)
The exponential function of raising e to the value x.
j (n,x)
The bessel function of integer order n of x.
Pour calculer la racine carré, c'est fastoche. Même sans le -l il y a la fonction sqrt().
~$ echo 'scale=4; sqrt(2)' | bc
1.4142
~$Pour la racine cubique, il faut faire un peu de math et se débrouiller avec la fonction exponentielle.
En sachant que : pour tout (a, b) appartenant à R2, a puissance b = exponentielle de ( b * ln(a) )
Donc pour la racine cubique de 2 :
~$ echo 'e((1/3)*l(2))' | bc -l
1.25992104989487316475
~$Vérifie mais je crois que c'est à peu près cela.
Allez, le meilleur pour la fin :
~$ time echo 'scale=5000; 4*a(1)' | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
28810975665933446128475648233786783165271201909145648566923460348610\
45432664821339360726024914127372458700660631558817488152092096282925
...... j'en passe et des meilleurs ....
73774418426312986080998886874132604720
real 0m10.874s
user 0m10.870s
sys 0m0.003s
~$ Hors ligne
#8 Le 20/04/2026, à 01:45
- Watael

Re : Guillemets et Calcul
ceci dit en bash c'est différent : https://unix.stackexchange.com/question … er-in-bash
les variables ne sont pas typées.
par défaut, mais elles peuvent l'être.
Dernière modification par Watael (Le 20/04/2026, à 01:49)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
Pages : 1