乱数の bash エラー構文

乱数の bash エラー構文

od -vAn -N4 -tu4 < /dev/urandom私の仕事は、読んだ2つの数字の間にランダムな数字()を表示することです。最小値の例外と生成された乱数を確認すると、構文エラーが発生する理由を理解できません。

私のコード部分はフランス語になっています

#!/bin/bash

randomMax=2147483647
randomMin=−2147483648
valide=true
echo "Entrez un nombre : "
read nombre1

echo "Entrez un autre nombre : "
read nombre2

if [[ $nombre1 -lt $randomMin || $nombre1 -ge $randomMax ]]; then
   echo "Le premier chiffre est hors de porté du random"
   valide=false

elif [[ $nombre2 -lt $randomMin || $nombre2 -ge $randomMax ]]; then
   echo "Le deuxième chiffre est hors de porté du random"
   valide=false
fi

if [[ $nombre2 -lt $nombre1 ]]; then
   nombre3=$nombre2
   nombre2=$nombre1
   nombre1=$nombre3
fi

if [[ $valide == true ]]; then
   randomNumber=$(((od -vAn -N4 -tu4 < /dev/urandom) % nombre2))
   echo "Voici le nombre : $((number1 + randomNumber))"
fi

ベストアンサー1

この行

randomNumber=$(((od -vAn -N4 -tu4 < /dev/urandom) % nombre2))
$ echo $(((od -vAn -N4 -tu4 < /dev/urandom) % nombre2))
-bash: (od -vAn -N4 -tu4 < /dev/urandom) % nombre2: syntax error: operand expected (error token is "/dev/urandom) % nombre2")

そうですね。外側は$((...))算術拡張です。

内部的にコマンド(...)を呼び出すためのものなので、コマンドの置き換えがod必要です。$(...)

randomNumber=$(( $(od -vAn -N4 -tu4 < /dev/urandom) % nombre2))
 $ nombre2=100
 $ echo $(( $(od -vAn -N4 -tu4 < /dev/urandom) % nombre2))
 47

おすすめ記事