永続的な変数値を使用してBashスクリプトを作成できますか?実行中の最後の値から値を保持するBashスクリプトの変数
たとえば、スクリプトを最初に実行したとき(特定の制限時間内)に変数を0に初期化し、スクリプトが実行されるたびに変数が自動的に増加します。
永続的な変数値を使用してBashスクリプトを作成できますか?実行中の最後の値から値を保持するBashスクリプトの変数
たとえば、スクリプトを最初に実行したとき(特定の制限時間内)に変数を0に初期化し、スクリプトが実行されるたびに変数が自動的に増加します。
私は数日前に同じ問題を抱えていたと私はので、仕事をするために自分自身のツールを書いたあなたがすることはできませんが、あなたはそれを
#!/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
状態をファイルのどこかに保存する必要があります。そのトリックは、ユーザーが書き込むことができるどこかに置くことです。
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"
ここにはbash-ism: 'yourscriptvar = $(<" $ HOME/.yourscriptvar ")'があります。ドキュメントはこちら[http://www.gnu.org/software/bash/manual/bashref.html#Command-Substitution] –
私はそれが好きです...私はbashのハッカーの私のバッグに入れます。ありがとう –
を行うには、ファイルを使用することができます同様のことをする別の方法はありません。
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
}
ハッ。あなたはそのような '図書館'のために、それはスピードのために最適化されると思います。例えば 'grep'はファイルを引数として取ることができるので、' grep'を使うと 'cat'は不要です。また、 'flock'や何かを使用しないと、並列実行でこれがどのようにうまくいくのだろうか。 – Yeti
@イエティあなたは完全に正しいです、gvarは私の問題を解決したばかりのおもちゃですが、私は前進していません。私はあなたが指摘した同様のことを考えました。ありがとう。 –
bashスクリプトでキー/値のデータベース書き込み。 https://github.com/damphat/kv-bash :) – damphat