Calculasortingce Bash

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)}')