Самый простой способ перебрать вызов скрипта bash - PullRequest
2 голосов
/ 30 декабря 2010

У меня есть скрипт bash.Мне бы хотелось, чтобы этот скрипт делал что-то новое каждый раз, когда я его называю (модуль три).Примерно так:

First script call => echo "call 1"
Second script call => echo "call 2"
Third script call => echo "call 3"
Fourth script call => echo "call 1"
Fifth script call => echo "call 2"
Sixth script call => echo "call 3"
Seventh script call => echo "call 1"
...

Какой самый простой способ сделать это?

Обратите внимание, что скрипт не критичен.Например: счетчик может вернуться к единице после перезагрузки:

...
n script call => echo "call 1"
n+1 script call => echo "call 2"
* reboot *
n+2 script call => echo "call 1"
...

в порядке.

Спасибо за ваши идеи.

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Самый простой способ - это просто сохранить значение в файле

if [[ `grep 2 config.txt` ]]
then 
    #run stuff version 2
    echo 3 > config.txt # next run will be 3
elif [[ `grep 3 config.txt` ]]
then
    #run stuff version 3
    echo 1 > config.txt # next run will be 1
else
    #run stuff version 1
    echo 2 > config.txt # next run will be 2
fi
0 голосов
/ 30 декабря 2010

В Баш:

call=$(< call.txt)
case $call in
    0) do_thing_one;;
    1) do_thing_two;;
    2) do_thing_three;;
    *) do_oops_thing;;
esac
echo $(( (call + 1) % 3 )) > call.txt
...