1

我有这个菜单脚本工作。我应该编写一个代码,将在日志文件中记录菜单脚本使用了多少次以及菜单中使用了哪些选项。

#\usr\bin\bash
clear;
echo "Welcome"
while [ $option!=7 ]
do
clear;
printf "\n\t\tMenu Principal"
printf "\n1)Pega 2 "
printf "\n2)Pega 3 "
printf "\n3)Pega 4 "
printf "\n4)Loto "
printf "\n5)Revancha "
printf "\n6)Ver Log File "
printf "\n7)Salir "
read option
case $option in
    '1')
        clear;
        echo "Los numeros del Pega 2 son : "
        awk 'BEGIN { for(i=1;i<=2;i++) print int(9*rand())}'>temp
        cat temp ; sleep 3
        ;;

    '2')
        clear;
        echo "Los numeros del Pega 3 son : "
        awk 'BEGIN { for(i=1;i<=3;i++) print int(9*rand())}'>temp
        cat temp ; sleep 3
        ;;

    '3')
        clear;
        echo "Los numeros del Pega 4 son : "
        awk 'BEGIN { for(i=1;i<=4;i++) print int(9*rand())}'>temp
        cat temp ; sleep 3
        ;;

    '4')
        clear;
        echo "Los numeros de la Loteria son : "
        awk 'BEGIN { for(i=1;i<=6;i++) print int(46*rand())}'>temp
        cat temp ; sleep 5
        ;;

    '5')
        clear;
        echo "Los numeros de la Revancha son : "
        awk 'BEGIN { for(i=1;i<=6;i++) print int(46*rand())}'>temp
        cat temp ; sleep 5
        ;;

    '6')
        clear;

        ;;

    '7')
        clear;
        echo "Gracias por participar! " ; sleep 2
        exit
        ;;

esac
done

在选项 6 中是日志文件应该去的地方。任何指针?

4

1 回答 1

1

脚本需要的部分我认为它比。首先,您需要一些变量来统计执行每个选项的次数。版本接受它,我会为此使用关联数组:

首先,作为第一条指令声明它:

declare -A options

并且对于每个执行的选项,增加它在哈希中的位置:

...
read option
((++options[ $option ]))
total_executed_times=0
case $option in
...

所以,当点击第六个选项时,遍历数组打印结果:

'6')
    for i in "${!options[@]}"; do
        total_executed_times=$(($total_executed_times + ${options[$i]}))
        echo "Option $i executed ${options[$i]} times"
    done
    echo "Times the menu was used: $total_executed_times"
    sleep 5
    clear;
    ;;

请注意,不会打印未选择的选项并且没有键的顺序,但如果您愿意,可能是一项需要改进的任务。

我执行了一个测试,在它之前捕获了它clear,它产生了:

Option  6  executed 2 times
Option  3  executed 1 times
Option  4  executed 2 times
Option  1  executed 4 times
Option  2  executed 1 times
Times the menu was used: 10
于 2013-07-19T18:18:14.953 回答