指定されたコマンドリスト内の1つのコマンドをランダムに実行する方法 起動音、壁紙のランダムな選択、またはコマンドの実行に役立ちます。
一般的に、次のように実行するコマンドがある場合、ランダム性を取得するにはどうすればよいですか?
#!/bin/bash
<command_1>
<command_2>
<command_3>
.
.
.
<command_n>
次に、スクリプトの実行時に上記の可能性から1つのコマンドのみをランダムに実行します!
どうやってするか?
指定されたコマンドリスト内の1つのコマンドをランダムに実行する方法 起動音、壁紙のランダムな選択、またはコマンドの実行に役立ちます。
一般的に、次のように実行するコマンドがある場合、ランダム性を取得するにはどうすればよいですか?
#!/bin/bash
<command_1>
<command_2>
<command_3>
.
.
.
<command_n>
次に、スクリプトの実行時に上記の可能性から1つのコマンドのみをランダムに実行します!
どうやってするか?
回答:
変数$RANDOM(実際にはbash関数)は、0から32767までの乱数を返します。
通常、範囲をいくつかの数値で除算して範囲を制限し、残りを取得します。
# output a random number 0 to 3
echo $((RANDOM % 4))
この単純化した例では、32768に等しく分割されない除数(たとえば、2の累乗ではないもの)に対して非常にわずかにバイアスがかかりますが、あなたのシナリオでは、あなたが困ることはないと思いますわずかな偏りで。
ランダムなファイルを選択するには、ファイルに次のような名前を付けます。
file0.jpg
file1.jpg
file2.jpg
file3.jpg
そして、あなたはランダムなものを選ぶことができます
# output a random file from file0.jpg to file3.jpg
echo "file$((RANDOM % 4)).jpg"
RANDOM、私は受け入れました!
GNU coreutilsshufからコマンドを使用できます。
NAME
shuf - generate random permutations
SYNOPSIS
shuf [OPTION]... [FILE]
shuf -e [OPTION]... [ARG]...
shuf -i LO-HI [OPTION]...
DESCRIPTION
Write a random permutation of the input lines to standard output
例:
$ shuf -i 1-5
4
1
2
5
3
$ shuf -e Debian Ubuntu Trisquel
Trisquel
Debian
Ubuntu
これで、1つのランダムエントリを取得するために、-n 1どの出力の最初の行を使用できます。
1〜100の乱数を印刷する例:
$ shuf -i 1-100 -n 1
37
file次の内容を持っている場合:
$ cat file
command-1
command-2
command-3
command-4
command-5
次のようなこともできます:
$ shuf file -n 1
command-3