ランダムにコマンドを実行する

ランダムにコマンドを実行する

C1これら2つのコマンドのいずれかをランダムに実行したいと思いますC2。コマンドラインでこれをどのように実行しますか?できればありがとうございます。

答え1

if (( RANDOM % 2 )); then C1; else C2; fi

答え2

特別な場合:

C$((RANDOM%2+1))

動作します:) こんにちは、それは最短の答えです!

答え3

Bashでは、次のことができます。

$ (( RANDOM%2 == 0 )) && C1 || C2

これにより、0または1の乱数が生成されます。 0 の場合は C1 が実行され、それ以外の場合は C2 が実行されます。

はい

$ (( RANDOM%2 == 0 )) && echo 0 || echo 1
1

$ (( RANDOM%2 == 0 )) && echo 0 || echo 1
0

注:最初の文字$はプロンプトです。

他の例

C2を実行するためにC1が失敗する必要があることを心配している場合は、次のように上記の内容をリファクタリングできます。

(( RANDOM%2 == 0 )) && CMD=C1 || CMD=C2
$CMD

if/thenステートメントでなぜ使用しますか?

この答えはいくつかの批判を受けましたが、私の狂気の方法があります。このパターンはif / thenよりも曖昧に見えるかもしれませんが、次のようなことをするときは読みやすく簡潔です。

#!/bin/bash
CMD=""
DIRS="/etc /home /www /data1 /data2 /var/log /var/spool/mail"
FILE="/backup/$(hostname)-$(date +'%m-%d-%y').tar.gz"
[ "$1" == "nas" ]  && CMD="lftp -u user,password -e 'cd /dump/; mput /backup/*; quit' nas.mylan.com" || :
[ "$1" == "scp" ]  && CMD="scp /backup/* scponly@dumpserver:incoming' username" || :
[ "$1" == "tape" ] && CMD='tar -cf /dev/st0 /backup/*' || :
[ "$CMD" == "" ]   && exit 1 || :
# make a backup
tar -zcvf  $FILE $DIRS
# Now depend upon circumstances run a backup command
$CMD

引用する

関連情報