Bagaimana cara saya meneruskan variabel ke fungsi yang sudah keluar?

0

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?

rumz
sumber
2
Jangan chmod 777. Ini risiko keamanan.
Daenyth

Jawaban:

1

Variabel tidak diperluas di dalam tanda kutip tunggal. Ubah mereka menjadi tanda kutip ganda dan itu akan berhasil.

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

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 isqldan menghindari membuat, chmoding dan rming file sementara.

echo "something" | isql ...
Dennis Williamson
sumber
Terima kasih, itu berhasil! Anda benar tentang izin dan perpipaan, saya hanya ingin bekerja pada bagian tersulit terlebih dahulu sebelum pergi ke seluk beluk.
rumz