Mengevaluasi tanggal pada "at" perintah waktu yang dijadwalkan

0

Saya menggunakan file skrip untuk menjalankan beberapa tugas menggunakan perintah AT, tetapi dalam file log tanggal bergema adalah tanggal ketika saya mengatur perintah AT bukan tanggal eksekusi.

Apa yang bisa saya lakukan untuk menampilkan waktu aktual eksekusi?

Ini adalah konten file skrip saya:

logFILE="/tmp/loggfile.log"

if [[ -z "$1" ]]; then echo "Please specify the run time, HH:MM "; exit 1; fi
runTIME=$1

at $runTIME <<< "
echo 'Running a task....'
echo 'An other task....'
echo 'END : (`date '+%H:%M'`)' >>$logFILE
"
echo "The command was scheduled to run at $runTIME"

Jika saya menjalankannya pada pukul 16:00 dengan ./script.sh 23:20, tugas akan dieksekusi pada 23:20 tetapi dalam file log saya dapatkanEND : (16:00)

Bantuan apa pun akan dihargai.

Ould Abba
sumber

Jawaban:

0

datedieksekusi ketika skrip berjalan karena `…`sintaks berada di dalam tanda kutip ganda. Itu juga di dalam kutipan tunggal dalam tetapi kutipan paling luar dihitung. Hasilnya attidak "melihat" `date …`tetapi hasilnya.

Buatlah kutipan luar tunggal, kutipan dalam ganda. atakan mendapatkan seluruh string seperti apa adanya. Ketika waktunya tepat itu akan berjalan shyang akan melihat `date …`dalam tanda kutip ganda dan hanya kemudian dateakan dievaluasi:

at "$runTIME" <<< '
echo "Running a task...."
echo "An other task...."
echo "END : (`date +%H:%M`)" >>"$logFILE"
'

Catatan saya menjatuhkan tanda kutip tunggal paling dalam ( '+%H:%M'). Dalam versi saya, mereka akan menghilang saat meneruskan string ke at; kode tetap bekerja tanpa mereka.

Kamil Maciorowski
sumber