Подтвердить что ты не робот

Переменная в Bash Script, которая сохраняет значение в последний раз

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

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

4b9b3361

Ответ 1

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

#!/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

Ответ 2

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

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"

Ответ 3

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

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

Здесь это самые интересные функции из исходного кода:

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

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

remove_variable() {
  sed -i.bak "/^$1=/d" $FILE
}