Linux シェル,複数の引数をランダムに並び替える

スポンサーリンク

鍛錬 193

Linux シェルスクリプト,複数の引数をランダムに並び替える

Linux で複数の引数をランダムに並び替えるには、shuf にオプションの -e を付加して使用します。
 
使用方法は、以下に示す通りです。

shuf -e 引数1 引数2 … オプション

-e 以外のオプションの一部は、以下に示す通りです。

オプション 機能
-z 各々の引数終端を、’\n’ から ‘\0’ に変換する
-n 出力数 出力する数を指定する
-o ファイル名 ファイルに出力する
-i 範囲開始-範囲終了 範囲を指定する

実際にシェルスクリプトを作成して確認

引数をランダムに並び替える

#!/bin/sh

ARG="AAA BBB CCC DDD EEE"

tmp=$(shuf -e $ARG)
echo $tmp
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./arg_random.sh
CCC DDD BBB EEE AAA

 
引数をランダムに並び替える際、引数各々の文字列終端を、’\n’ から ‘\0’ に変換する

#!/bin/sh

ARG="AAA BBB CCC DDD EEE"

tmp=$(shuf -e $ARG -z)
echo $tmp
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./arg_random.sh
EEEBBBCCCDDDAAA

 
引数をランダムに並び替える際、出力する数を指定する

#!/bin/sh

ARG="AAA BBB CCC DDD EEE"

tmp=$(shuf -e $ARG -n 3)
echo $tmp
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./arg_random.sh
AAA CCC DDD

 
引数をランダムに並び替える際、出力する範囲を指定する

#!/bin/sh

ARG="0-100"

tmp=$(shuf -i $ARG)
echo $tmp
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./arg_random.sh
81 10 42 93 11 30 35 84 8 64 79 78 7 72 4 75 69 38 98 73 33 87 67 37 96 50 91 18 28 44 66 88 57 48 1 9 86 97 59 85 80 5 41 83 76 12 25 31 68 14 54 77 71 22 47 32 15 52 24 6 46 53 3 26 17 23 60 2 89 62 40 0 63 95 92 61 34 58 82 70 16 94 27 20 49 100 65 13 19 39 99 74 21 36 51 29 45 90 55 56 43

 
引数をランダムに並び替える際、出力する範囲と数を指定する

#!/bin/sh

ARG="0-100"

tmp=$(shuf -i $ARG -n 3)
echo $tmp
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./arg_random.sh
39 10 65

 
引数をランダムに並び替える際、ファイルに出力する

#!/bin/sh

ARG="AAA BBB CCC DDD EEE"

tmp=$(shuf -e $ARG -o result.txt)
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ls
arg_random.sh
***@ubuntu:~/***/test/shell$ ./arg_random.sh
***@ubuntu:~/***/test/shell$ ls
arg_random.sh  result.txt
***@ubuntu:~/***/test/shell$ cat result.txt
BBB
AAA
EEE
DDD
CCC

 
引数をランダムに並び替える際、出力する数を指定してファイルに出力する

#!/bin/sh

ARG="AAA BBB CCC DDD EEE"

tmp=$(shuf -e $ARG -o result.txt -n 3)
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ls
arg_random.sh
***@ubuntu:~/***/test/shell$ ./arg_random.sh
***@ubuntu:~/***/test/shell$ ls
arg_random.sh  result.txt
***@ubuntu:~/***/test/shell$ cat result.txt
EEE
DDD
BBB
スポンサーリンク

シェアする

フォローする