複数のリストの中からランダムにN個の要素を抽出するShellScriptを作ってみる。
Scriptの内容は以下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#!/bin/bash
# 配列の定義
array=("apple" "banana" "cherry" "date" "elderberry" "fig" "grape" "honeydew" "kiwi" "lemon")
# アニメーションの表示関数
animate() {
for i in {1..3}; do
echo -ne "\rSelecting random items${dots} "
dots=$(printf "%0.s." $(seq 1 $i))
sleep 1
done
echo -ne "\r \r" # アニメーション部分をクリア
}
# ランダムに配列から3つ抽出
random_items=($(shuf -e "${array[@]}" | head -n 3))
# アニメーションの実行
animate
# 結果を出力
echo "Randomly selected items: ${random_items[*]}"
|
実行権限を与え、
1
|
chmod +x random_selector.sh
|
実行する。
3秒くらいくるくるアニメーションして、結果が表示される。
1
2
3
4
5
|
Selecting random items: Done!
Randomly selected items:
- kiwi
- apple
- fig
|
macOSで動かす場合は shuf
が入っていないため、coreutils
をインストールして gshuf
を利用する。
先ほどのスクリプトの shuf
を gshuf
に書き換えて再実行すればOK。