내 bash 스크립트가 아래 주어진 임의의 명령을 실행하기를 원합니다. 예를 들어
[mysterious command] ("command1", "command2", "command3")
답변1
명령을 배열에 넣으세요.
cmds=( "cmd1" "cmd2" "cmd3" )
$RANDOM
${#cmds[@]}
는 배열의 길이로 계산된 난수입니다 (이 경우 3). $(( RANDOM % ${#cmds[@]} ))
배열의 길이보다 작은 0과 1 사이의 임의의 숫자 cmds
, 즉 0, 1 또는 2가 됩니다.
i=$(( RANDOM % ${#cmds[@]} ))
다음을 수행하면 $cmds
인덱스에 해당하는 문자열을 선택하여 $i
명령으로 실행합니다.
${cmds[i]}
아니면 한 번에 모든 작업을 수행합니다(조금 무서운 것 같습니다).
${cmds[RANDOM % ${#cmds[@]}]}
답변2
이것은 당신이 찾고있는 것을 달성해야합니다.
COMMANDS=("command1" "command2" "command3")
$(shuf -n1 -e "${COMMANDS[@]}")
배열을 가져와 이를 사용하여 shuf
임의의 명령을 생성합니다.
업데이트: @steeldriver에 따라 shuf 명령이 변경되었습니다.