Implementando Statement e RecordSet em bash script
Publicado por Pedro Robson Leão (última atualização em 02/12/2010)
[ Hits: 4.474 ]
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 ${@};
Abilitando impressora no cups automatico
Dialog - Menu semi-gráfico para adicionar, excluir, alterar usuários no Samba
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Erro ao converter string para inteiro (4)
Não consigo acessar os modos de desempenho no mint 2.3 (6)
Criar uma base de reconhecimento de HW no VOL (8)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba