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
ありがとう、それはトリックでした!そしてrefページへのリンクをありがとう。 – cw2
マッチする '!'を最後の行に置いてオリジナルの '!'を残すことは可能でしょう。私はしばしば、ここでは '!'やEOSやEOTの終わりのマーカーとして 'EOF'を使用しますが、それぞれ独自のものです。 –
はい。私はそれを明示的にするように変更しました。また、SQL照会では、!= =が等しくないために使用されることがあり、問題が発生します。 – Munir