Yang ingin saya lakukan adalah membuat beberapa pernyataan sql informix & menjalankannya melalui skrip bash.
Inilah yang saya miliki sejauh ini (ini berfungsi) tetapi dimaksudkan untuk dijalankan dari pekerjaan cron sehingga hanya dilakukan satu hari pada suatu waktu:
echo "
update hst`date --date='yesterday' +%m%d%y`
set x = 'GARP'
where y in ('CRE', 'LAC', 'SRL', 'JAG', 'JNM', 'BIM')
and appl = '';
" > update_x_hst.sql
chmod 777 update_x_hst.sql
isql -s history_hst update_x_hst.sql
rm update_x_hst.sql
Saya harus melakukannya dengan cara ini karena sistem saya bekerja dengan membuat tabel setiap hari, jadi saya akan memiliki hst070810, hst070910, hst071010, dan seterusnya sebagai tabel saya bahwa saya perlu memperbarui.
Saya ingin melakukan sesuatu yang akan membuat file sql dan kemudian jalankan dan kemudian lakukan lagi dan lagi untuk beberapa kali, dalam for for loop.
#!/bin/bash
for x in {1..11}
do
echo "
update hst`date --date='$x days ago' +%m%d%y`
set x = 'Complete'
where y = 1;
" > update_x_hst.sql
chmod 777 update_x_hst.sql
isql -s history_hst update_x_hst.sql
rm update_x_hst.sql
done
Masalahnya di sini adalah ia tidak ingin membaca variabel $ x dengan benar sehingga pernyataan gagal.
Ada ide?
Jawaban:
Variabel tidak diperluas di dalam tanda kutip tunggal. Ubah mereka menjadi tanda kutip ganda dan itu akan berhasil.
Anda juga harus mengatur izin untuk sesuatu yang lebih tepat. 777 sepertinya tidak diperlukan.
Saya tidak yakin, tetapi Anda mungkin dapat menyalurkan SQL ke dalam
isql
dan menghindari membuat, chmoding dan rming file sementara.sumber