Переменная в скрипте Bash, которая сохраняет значение с момента последнего запуска - PullRequest
15 голосов
/ 28 марта 2012

Могу ли я создать скрипт Bash с постоянными значениями переменных?

Например, я инициализирую переменную с 0, когда скрипт запускается в первый раз (в течение определенного периода времени), и переменная автоматически увеличивается с каждым разом, когда скрипт выполняется.

Ответы [ 3 ]

16 голосов
/ 28 марта 2012

вы не можете, но вы можете использовать файл, чтобы сделать это

#!/bin/sh

# if we don't have a file, start at zero
if [ ! -f "/tmp/value.dat" ] ; then
  value=0

# otherwise read the value from the file
else
  value=`cat /tmp/value.dat`
fi

# increment the value
value=`expr ${value} + 1`

# show it to the user
echo "value: ${value}"

# and save it for next time
echo "${value}" > /tmp/value.dat
3 голосов
/ 26 апреля 2016

У меня была такая же проблема несколько дней назад, и я написал свой собственный инструмент для выполнения работы, потому что нет другого способа сделать что-то подобное.

гвар - это хранилище значений ключей в чистом виде, в котором у каждого пользователя свой набор данных.Записи хранятся в домашнем каталоге пользователя.

Здесь представлены наиболее интересные функции из исходного кода:

get_variable() {
  cat $FILE | grep -w $1 | cut -d'=' -f2
}

set_variable() {
  echo $1=$2 >> $FILE
}

remove_variable() {
  sed -i.bak "/^$1=/d" $FILE
}
3 голосов
/ 28 марта 2012

Боюсь, вам нужно где-то сохранить состояние в файле. Хитрость заключается в том, чтобы поместить его туда, куда пользователь сможет писать.

yourscriptvar=0

if [ -e "$HOME/.yourscriptvar" ] ; then
    yourscriptvar=$(cat "$HOME/.yourscriptvar")
fi

# do something in your script

#save it output the file
echo $yourscriptvar > "$HOME/.yourscriptvar"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...