무작위로 명령 실행

무작위로 명령 실행

C1이 두 명령 중 하나를 무작위로 실행하고 싶습니다 C2. 명령줄(bash)에서 이 작업을 어떻게 수행합니까? 가능하다면 감사하겠습니다.

답변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

인용하다

관련 정보