1
我經常執行某個查詢,並希望編寫一個簡單的bash腳本來運行。當我將它設置爲以下給出文件意外結尾的查詢腳本格式
#!/bin/bash
dbaccess davedb <<! 2>/dev/null
set isolation dirty read;
SELECT cpe_localization_code
FROM hct_profile
WHERE hct_mac_address = '$mac';
運行它的工作原理,但是我必須努力設置$ MAC變量,我試圖把它從文件中讀取。
如果我像這樣構造它,它會從文件中讀取數據,但是它會每次都顯示和回顯,所以我在屏幕上亂七八糟。
#!/bin/bash
OLDIFS=$IFS
IFS="/t"
file=list.csv
while read mac; do
echo "SET isolation dirty read;
SELECT cpe_localization_code
FROM hct_profile
WHERE hct_mac_address = '$mac'
;" | dbaccess davedb
done <"$file"
IFS=$OLDIFS
返回
Database selected.
Isolation level set.
cpe_localization_+
82345
1 row(s) retrieved.
Database closed.
Database selected.
Isolation level set.
cpe_localization_+
82345-1
1 row(s) retrieved.
Database closed.
我試過,但給我的文件的意外結束。
#!/bin/bash
OLDIFS=$IFS
IFS="/t"
file=list.csv
while read mac; do
dbaccess davedb <<! 2>/dev/null
set isolation dirty read;
SELECT cpe_localization_code
FROM hct_profile
WHERE hct_mac_address = '$mac';
done <"$file"
IFS=$OLDIFS
幫助在正確的方向指向我解決
謝謝,這個伎倆!並感謝您參考參考頁面的鏈接。 – cw2
通過將匹配的「!!」放在最後一行上,可以保留原來的'!'。我經常使用'EOF'作爲here-doc結尾的標記(有時是'!'或者EOS或者EOT),但是每個都是他們自己的。 –
是的。我改變了它,使其明確。此外,SQL查詢有時使用!=不等於,這會導致問題。 – Munir