La ligne suivante ne fonctionne pas dans mon script:
a=$(echo "scale=3;(2*$j/(sqrt(3)*$i))" | bc) a1=$(echo `expr "scale=3; $a^(1/3)"` | bc -l)
L’erreur qu’il donne:
Avertissement d’exécution (func = (main), adr = 21): échelle non nulle en exposant
Je veux juste avoir la valeur de racine de cube de ‘a’. D’une certaine manière, je ne comprends pas. S’il vous plaît donner une idée.
Cette ligne est problématique:
a1=$(echo `expr "scale=3; $a^(1/3)"` | bc -l)
Comme vous ne pouvez pas utiliser une valeur non entière comme puissance dans bc
.
Exemple pour reproduire cette erreur:
bc -l bc 1.06 sqrt(3)^(1/3) Runtime warning (func=(main), adr=11): non-zero scale in exponent 1
Solution:
Vous pouvez utiliser cette fonction pour calculer la racine du cube:
a1=$(bc -l <<< "scale=3; e(l($i)/3)")
Exemple:
i=8; bc -l <<< "scale=3; e(l($i)/3)" 1.999
Ou utilisez awk
comme mentionné par @fedorqui
Vous voulez probablement utiliser awk
pour cela au lieu d’utiliser des syntaxes bc
complexes:
awk -v num=$bash_variable 'BEGIN{print num^(1/3)}'
Par exemple:
v=3 awk -v num=$v 'BEGIN{print num^(1/3)}'
Retours: 1.44225
.
Ou stockez la variable pour une autre utilisation:
var=$(awk -v num=$v 'BEGIN{print num^(1/3)}')