mecobalamin’s diary

人間万事塞翁が馬

今度はshell scriptで

検索でこのページが引っかかっているようですが
消しちゃったので別の記事を載せます

以前pythonとRでやったことをShell scriptでも書いてみた
mecobalamin.hatenablog.com
mecobalamin.hatenablog.com

書いたスクリプトはこれ

#!/bin/bash

ppap_array=()
ppap_word=("Pen" "Pineapple" "Apple")
ppap_true=("Pen" "Pineapple" "Apple" "Pen")
ppap_flag=""

while [ "$ppap_flag" != "PPAP!" ]
do
  for i in {0..3}
  do
    rand_n=$(($RANDOM % 3))
    ppap_array+=(${ppap_word[${rand_n}]})
  done

  echo ${ppap_array[@]}

  for i in {0..3}
  do
    if [ ${ppap_array[i]} != ${ppap_true[i]} ]; then
      break
    elif [ ${i} = 3 ]; then
      ppap_flag="PPAP!"
      break
    fi
  done

  ppap_array=()

done

echo ""
echo ${ppap_flag}

スクリプトのファイルに実行権限を与える

$ chmod 755 PPAP.sh

実行結果はこんな感じになる

$ ./PPAP.sh
Apple Pen Pen Apple
Pen Pen Pen Pineapple
Pineapple Apple Apple Apple
Apple Pineapple Pen Apple
Pen Pineapple Apple Pen

PPAP!

配列を直接比較する方法を探せなかった
何かありそうだけど。。。
while文/if文の使い方もいまいちわかってない

もう少し短く書けないか試す

14 July 2019追記
ワンライナーで書いている
ズンドコキヨシ with {k,ba,z}sh and sed - Qiita

出力をパイプで繋いで処理を続けるのが特徴か
配列を使ってないし。。。
スクリプトの特徴をうまく使えるようになりたい