エルフが多すぎるのに良い方法がありますか?

エルフが多すぎるのに良い方法がありますか?

次のようなBashスクリプトがあります。

#!/bin/bash
#
FECHA=`date +%j`

if [ $FECHA -eq 40 ]
then
    echo "Esta semana le toca preparar el café a Osvaldo" | mail -s 'Café' [email protected]
    exit
elif [ $FECHA -eq 47 ]
then
    echo "Esta semana le toca preparar el café a Berenice" | mail -s 'Café' [email protected]
    exit
elif [ $FECHA -eq 54 ]
then
    echo "Esta semana le toca preparar el café a Nizaá" | mail -s 'Café' [email protected]
    exit
fi

crontabのおかげで毎週月曜日の午前7時に実行されます。

実際のBashスクリプトにはより多くの人が参加するので、より多くの行があります。うまくいくと思います。しかし...このスクリプトの行数を減らす方法はありますか?

私は2つの変数を考えています。 1つはコーヒーを作った人のための変数であり、もう1つは日付のための変数であり、これらの変数を関連付ける方法です。

ベストアンサー1

構造がここによく合うと思いますcase/esac

#!/bin/bash

case "`date +%j`" in
  40) name=Osvaldo ;;
  47) name=Berenice ;;
  54) name=Nizaá ;;
  *) exit ;;
esac

echo "Esta semana le toca preparar el café a ${name}" \
   | mail -s 'Café' [email protected]

注:同じ人がコーヒーを複数回作成する必要がある場合は、次のようにテストを集計できます|

case "`date +%j`" in
  12|23|40|49) name=Osvaldo ;;
  10|19|30|47) name=Berenice ;;
...

おすすめ記事