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