(standard_in) 1: erreur de syntaxe dans le script bash

Je suis en train de générer de la quasi nombres aléatoires pour alimenter une simulation de monte carlo. Je suis en utilisant bash. Il me semble avoir frappé une erreur de syntaxe que j'ai rétréci vers le bas pour être dans ce morceau de code.

randno4=($RANDOM % 100001)
upper_limit4=$(echo "scale=10; 1*75.3689"|bc)
lower_limit4=$(echo "scale=10; 1*75.1689"|bc)
range4=$(echo "scale=10; $upper_limit4-$lower_limit4"|bc)
t_twall=`echo "scale=10; ${lower_limit4}+${range4}*${randno3}/100001" |bc`
echo "$t_twall"

Personne ne sait pourquoi je le ci-dessous de sortie et non une valeur entre 75.3689 et 75.1689 que c'est ce que je voudrais être attend-il?

(standard_in) 1: syntax error
  • randno4=($RANDOM % 100001) n'est pas de l'arithmétique de l'évaluation. Qui permettra de créer un randno4='([0]="25649" [1]="%" [2]="100001")' tableau. Peut-être que vous avez voulu dire randno4='$(($RANDOM % 100001))'?
  • J'ai plusieurs lignes identique à la première ligne en dehors du nom de la variable. Ils semblent être très bien.
  • Vous pouvez également utiliser $randno3 dans le t_twall cession de ligne qui n'est pas défini.
  • Cette première ligne est fine. Il n'a tout simplement pas faire ce que vous pensez que cela fonctionne. Exécutez cette ligne, puis exécutez declare -p randno4. Ensuite, essayez echo "$randno4" vs echo "${randno4[1]}".
  • Je crois que l'erreur est ici de bc en raison de la randno3 faute de frappe.
  • OK, donc est le point zéro dans le tableau un nombre aléatoire et si oui, est-il entre 0 et 100001? Dans mes sorties, je n'ai pas remarqué de problèmes bien que je suis nouveau à cela et écrire. Je n'ai pas le même numéro que vous pour le zéro de l'élément-je obtenir [0]="22737"
  • Le premier élément est l'expansion de $RANDOM de sorte qu'il sera... wait for it... aléatoire. Le point est que vous êtes pas appliquer un modulo pour que la valeur de la façon dont vous vous attendiez. Vous créez un tableau avec 3 éléments. La première (indice 0) est une surabondance de nombre aléatoire. La deuxième est %. Le troisième est 100001. Pour une variable de tableau arr à l'aide de $arr est équivalent à ${arr[0]}. Ainsi, lorsque vous utilisez $randno4 vous accédez à ${randno4[0]} qui est la surabondance de nombre aléatoire.
  • Je ne veux pas tromper vous, mais serait très très très utile pour moi de savoir si oui ou non l'élément zéro est un nombre aléatoire entre 0 et 100001 ou pas. Est-ce le cas? C'est une autre limite par exemple, l'int de limiter ou de la double précision limite? Oublier le reste de la matrice. Je ne veux pas déranger un collègue à propos d'un article universitaire qu'ils ont déjà publié si c'est le cas. Si elle n'est pas alors que je devrais au moins savoir si ils ont trouvé et corrigé le problème.
  • La page de manuel de bash explique la gamme de RANDOM. Il est décrit comme "un entier aléatoire compris entre 0 et 32767".
  • Merci à vous qui a été extrêmement utile. Page de manuel de Bash est qu'un site web? Googler il vous donne beaucoup de hits?
  • C'était dans un livre? Êtes-vous en mesure de partager ce papier, c'était?
  • C'est un papier dans la soumission que je pense est d'utiliser le même code. Je vais voir la personne en question demain. Ne veux pas inutilement la panique n'importe qui, mais doit être vérifié. Je sais que c'est un énorme MATLAB fan et qui auront probablement réécrit ce faire de tous ces trucs en MATLAB (je ne veux pas le faire pour diverses raisons qui sont trop détaillées pour obtenir en maintenant). Ce n'est pas un livre sur l'informatique je m'empresse d'ajouter, nous (comme vous pouvez le dire à partir de mes questions de base) ne sont pas un département d'informatique. Apprécie vraiment votre aide. 🙂
  • Le man de commande devrait être un peu la première commande Linux vous apprendre. Voici le bash page de manuel
  • J'ai donné +1 pour la question (et @Etan), car il m'a aidé à comprendre rapidement où l'étrange message d'erreur venu (ce qui était le résultat de mal écrite regex pour grep que les fouilles fois de ping de sortie, conduisant à mal formée d'entrée pour bc).