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