1

前回ファイルを実行したときのレコードを作成し、次にスクリプトファイルを実行するときにその時間を使用しようとしています。したがって、testlastrun.shtestmyfile.shの2つのファイルがあり、他のファイルで使用される変数を宣言しています。しかし、私の一生の間、私はそれを機能させることができないようです。

ファイルtestlastrun.sh

#!/bin/sh

#prepare range of dates for getting data for redemption protocol
source testmyfile.sh
echo "current date is : " `date +'%Y-%m-%d %H:%M:%S'`
enddate=`date -d "+1 hour" '+%Y-%m-%d %H:%M:%S'`
echo "the end date is : " $enddate
startdate=$LASTRUNTIME
echo "start date:" $startdate
LASTRUN=$enddate
export LASTRUN 
echo "LASTRUN variable is : " $LASTRUN

ファイルtestmyfile.sh

#!/bin/sh

echo "LASTRUN variable is currently set to : " $LASTRUN
LASTRUNTIME=$LASTRUN
export LASTRUNTIME

bashスクリプトと変数に関するすべての投稿を読んだように感じますが、私の人生ではこれを機能させることができません。ですから、超スマートなbashの専門家の誰かが私を助けてくれるなら、私はそれを大いに感謝します。:-)

4

2 に答える 2

1

他の人の利益のために、これが私がこのシナリオを解決した方法です。値をテキストファイル(値のみを含む)に書き込んだ後、スクリプトの開始時にファイルを読み取りました。これを達成するために使用したコードは次のとおりです。

#!/bin/sh

#reads the file testmyfile.txt and sets the variable LASTRUNTIME equal to the contents of the text file
LASTRUNTIME=`head -n1 testmyfile.txt |tail -1`
echo "the last time this file was executed was : " $LASTRUNTIME

#shows the current server time on the terminal window
currentdate=`date +'%Y-%m-%d %H:%M:%S'`
echo "current date is : " $currentdate

#sets the variable 'enddate' equal to the current time +1 hour
enddate=`date -d "+1 hour" '+%Y-%m-%d %H:%M:%S'`
echo "the end date is : " $enddate

#sets the variable 'startdate' equal to the variable LASTRUNTIME
startdate=$LASTRUNTIME
echo "start date:" $startdate

#creates and sets variable LASTRUN equal to the current date and time
LASTRUN=$currentdate
echo "LASTRUN variable is : " $LASTRUN

#updates the file 'testmyfile.txt' to store the last time that the script routine was executed
echo "$LASTRUN" > '/home/user/testmyfile.txt'

そして、それは私がそれをした方法です。ガウィありがとう。私は助けに感謝します。

于 2013-03-18T16:30:36.560 に答える
1

あなたの間違いは、スクリプトの環境exportを変更することを期待しているという事実から来ていると思います。このステートメントは、この変数を環境で使用できるようにするようにシェルに指示するだけです。export

このexportスクリプトから新しいスクリプトを生成していないため、スクリプト内のは目的を果たしません(スクリプトをソーシングしているため、ファイルを含めるのと同じです)。

むしろ、情報をファイルに書き込んで、必要に応じて読み戻す必要があります。

于 2013-03-14T01:39:51.803 に答える