Implementando Statement e RecordSet em bash script
Publicado por Pedro Robson Leão (última atualização em 02/12/2010)
[ Hits: 4.861 ]
Já publiquei um script similar em: http://www.vivaolinux.com.br/script/MySQL-bash-script
Porém refactory é sempre bom para melhorar nossos códigos.
Bem, o exemplo a seguir é mais enxuto e funcional, mesmo tratando-se de um código conceitual explorando todo o poder do bash script.
#!/bin/bash
DB_USER='user';
DB_PWD='password';
DB_HOST='localhost';
DB="mysql"
DB_CLIENT="/usr/bin/mysql -u${DB_USER} -p${DB_PWD} -h${DB_HOST} $( [ ! -z "${DB}" ] && echo ${DB} || echo "" ) -e ";
function statement() {
local ifs=${IFS};
local line=;
local ct=0;
local err=$(mktemp);
RS=();
IFS="|";
local query=" ${DB_CLIENT} \"${@}\" 2>${err}";
while read line ; do
if [ ${ct} -eq 0 ] ; then
FIELD=( ${line} );
else
_RS=( ${line} );
local sz=${#FIELD[@]};
local i=;
for ((i=0;i<sz;i++)) ; do
local row=$((ct-1));
local field="${FIELD[$i]}";
local value="${_RS[$i]}";
field="${field//[- ]/_}";
eval "${field}[$row]='${value}'";
RS[${row}]="${line}";
done
fi
ct=$((ct+1));
done < <( eval ${query} | sed 's/ / /g' | tr ' ' '|' );
IFS="${ifs}";
DBERRMSG=$( cat ${err} && rm -f ${err} );
test -z "${DBERRMSG}";
}
function main() {
statement "SELECT Host,User FROM user" && {
local rs=${#RS[@]};
local i=;
for ((i=0;i<rs;i++)) {
printf "Line: %-20.20s\nHost: %-20.20s\nUser: %-20.20s\n\n" \
${i} "${Host[$i]}" "${User[$i]}";
}
} || {
echo ">>> ${DBERRMSG}";
}
}
main ${@};
Instalação do Cisco Packettracer 7.2 no Debian 10
get-geo2 - localiza o endereço de um IP/HOST no Google Maps
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
Aderencia a Obsolencia Programada. (2)
Não consigo criar pasta em um HD secundário. [RESOLVIDO] (0)
Jogos baixados na Central de Aplicativos mas que não abrem (2)









