2017-08-29 6 views
-1

bashスクリプト:

for c in $(seq 1 10) 
do 
    echo "random value #$c:$(echo "$RANDOM")" 
done 

出力:あなたはbashの古いバージョンを使用している場合を除き

 
random value #1:20892 
random value #2:20892 
random value #3:20892 
random value #4:20892 
random value #5:20892 
random value #6:20892 
random value #7:20892 
random value #8:20892 
random value #9:20892 
random value #10:20892 
+0

を(HTTPを[編集ヘルプ]をご覧ください。 com/editing-help)を参照してください。 – Cyrus

+1

スクリプトをどうやって呼び出すのですか?つまり、スクリプトを実行するために使用するコマンドラインは何ですか? – John1024

+0

私はこのようにしてbash 4.3.8でこれを再現できます: 'for $ in seq 1 10;エコーをする "ランダム値#$ c:$(ランダム= 42;エコー" $ランダム ")"; done' – Cyrus

答えて

0

、あなたのそのシーケンスを生成するためのseqに頼る何理由は絶対にありません。

さらに、echo $(echo something)のようなものは、です。完全には不要です。これらの懸念の両方のためのスクリプトを変更する

:また、あなたのスクリプトを

random value #1:3394 
random value #2:6099 
random value #3:21492 
random value #4:17973 
random value #5:22698 
random value #6:15844 
random value #7:28506 
random value #8:1960 
random value #9:23593 
random value #10:17412 

そして、実際には:

for c in {1..10} ; do 
    echo "random value #$c:$RANDOM" 
done 

はあなたに正しいデータを生成し、何かを与えます私はあなたが間違いなくRANDOM変数を詰め込んでいるかもしれないと推測しているので、(少なくともbash 4.3.46で)動作しますここに。 「変数」を設定解除すると、後で使用する際に問題が発生する可能性があり、特定の値に設定するとジェネレータがシーズンされることに注意してください。

したがって、私はあなたのbashシェルごとの起動スクリプトで何かを探していて、RANDOMを特定の値に設定する可能性があります。このスクリプトは$(echo $RANDOM)のために実行され、単に値を直接エコーすると修正される可能性があります)。確かに次のデモごとに、あなたの問題を引き起こす

for c in {1..5} ; do 
    RANDOM=7 
    echo "random value #$c:$RANDOM" 
done 

与える:// stackoverflowの:

random value #1:19345 
random value #2:19345 
random value #3:19345 
random value #4:19345 
random value #5:19345 
+0

私が使ったのは古いバージョンのbashだと思います。私はforループで{1..10}を使うことができなかったので、seqに頼らざるを得ませんでした。 – amar

+0

@amar、そのような小さなシーケンスの場合は、1 2 3 4 5で 'for i 'を使うことができます。 〜をしてください。 – paxdiablo

関連する問題