次のような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 ;;
...