Estok SH 1.2b - Controle de Estoque em Shell Script
Publicado por Raphael Ciribelly (última atualização em 19/02/2020)
[ Hits: 2.384 ]
Sistema de Estoque em 47.659 bytes
Funcionalidades: Cadastro de produtos, Clientes, Fornecedores, Entrada e Saída e contagem de produtos
Como usar
Dê permissão para execução:
$ chmod +x estok1.2b.sh
Execute o arquivo com a opção -m (menu):
$ ./estok1.2b.sh -m
Observações: o programa é bem simples, fiz para estudo, criei em apenas uma semana então possui alguns bugs que precisam ser resolvidos. Sinta-se a vontade para usar, copiar e alterar o código, caso queira melhorar o programa.
Abraço a todos.
#!/usr/bin/env bash # Autor: Raphael Ciribelly # Bash: 4.4.20(1)-release (x86_64-pc-linux-gnu) # Idioma: pt_BR.UTF-8 #---> variaveis MENUPRINCIPAL="menuloop" ESTOKDIR=~/estok # diretorio estok PRODUTODIR=~/estok/produtos # diretorio produtos LOGDIR=~/estok/logs # diretorio log CLIENTEDIR=~/estok/clientes # diretorio clientes FORNECEDORDIR=~/estok/fornecedores # diretorio fornecedores DATAATUAL=$(date "+%d/%m/%Y %T") # data cadastro SOMA=~/estok/soma.sum # arquivo log soma SOMA2=~/estok/soma2.sum # arquivo log soma 2 SOMA3=~/estok/soma3.sum # arquivo log soma 3 SOMAF=~/estok/somafinal.sum # arquivo log soma final VALORSOMAF=$"(<~/estok/soma2.sum)" # valor final da soma LISTALOG=~/estok/logs/lista.list # arquivo lista.list utilizado em consulta de iténs ENTRADALOG=~/estok/logs/entrada.log # log entrada SAIDALOG=~/estok/logs/saida.log # log saida BUSCALOG=~/estok/logs/busca.log # log busca EXCLUIDOLOG=~/estok/logs/excluidos.log # log excluidos ALTERADOLOG=~/estok/logs/alterados.log # log alterados CADASTROPRODUTOLOG=~/estok/logs/cadastro_produtos.log # log cadastrados CADASTROCLIENTELOG=~/estok/logs/cadastro_cliente.log # log clientes CADASTROFORNECEDORLOG=~/estok/logs/cadastro_fornecedor.log # log fornecedores RELATORIOLOG=~/estok/logs/relatorio.log # log relatorio #---> verificações # diretorio estok existe ??? if [ -d $ESTOKDIR ];then sleep 1s ; else mkdir $ESTOKDIR ; \ mkdir $PRODUTODIR ; \ mkdir $LOGDIR ; \ mkdir $CLIENTEDIR ; \ mkdir $FORNECEDORDIR ; \ fi #======================== Arrays COMEÇO =================================== #---> arrays #array cadastro produtos array 11 campos CADASTROPRODUTO=("NOME:" "UNIDADE:" "CATEGORIA:" "FORNECEDOR:" "CODIGO:" "QUANTIDADE:" "ESTOQUE MINIMO:" "VALOR R$:" "CUSTO R$:" "DESCRIÇÃO:" "DATA:") #array cadastro clientes array 19 campos CADASTROCLIENTE=("CODIGO:" "NOME:" "DATA DE NASCIMENTO:" "SEXO:" "ENDEREÇO:" "BAIRRO" "NUMERO:" "COMPLEMENTO:" "CIDADE:" "UF:" "CEP:" "E-MAIL:" "FISICA/JURÍCA:" "CPF/CNPJ:" "RG:" "TELEFONE:" "CELULAR:" "INFORMAÇÕES ADICIONAIS:" "DATA:") #array cadastro fornecedores array 23 campos CADASTROFORNECEDOR=("CODIGO:" "NOME:" "NOME FANTASIA:" "RAZÃO SOCIAL:" "RAMO DE ATIVIDADE:" "ENDEREÇO:" "BAIRRO" "NUMERO:" "COMPLEMENTO:" "CIDADE:" "UF:" "CEP:" "PAÍS:" "E-MAIL:" "SITE:" "FISICA/JURÍCA:" "CPF/CNPJ:" "INSCRIÇÃO ESTADUAL:" "TELEFONE-1:" "TELEFONE-2" "CELULAR:" "INFORMAÇÕES ADICIONAIS:" "DATA:") #======================== Arrays FIM ===================================== #---> funções trocavirgula(){ cd $PRODUTODIR 2>>/dev/null ; sed -i 's/,/./g' *.prod 2>>/dev/null ; } # função: deseja continuar ??? perguntacontinuar () { while true; do read -e -p "(s/n)?: $1" sn case $sn in [Ss]* ) sleep 1 ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } #======================== FUNÇÃO: listas COMEÇO ========================== # funçao: ver lista produtos??? verlistaproduto () { while true; do read -e -p "Deseja visualizar lista de produtos (s/n)?: $1" sn case $sn in [Ss]* ) ls $PRODUTODIR | sed -e "s/\.prod$//" | less -i ; read -rsn1 -p "Pressione ENTER para voltar ao menu" ; menu ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } # funçao: ver lista clientes ??? verlistacliente () { while true; do read -e -p "Deseja visualizar lista de clientes (s/n)?: $1" sn case $sn in [Ss]* ) ls $CLIENTEDIR | sed -e "s/\.cli$//" | less -i ; read -rsn1 -p "Pressione ENTER para voltar ao menu" ; menu ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } # funçao: ver lista fornecedor ??? verlistafornecedor () { while true; do read -e -p "Deseja visualizar lista de fornecedores (s/n)?: $1" sn case $sn in [Ss]* ) ls $FORNECEDORDIR | sed -e "s/\.for$//" | less -i ; read -rsn1 -p "Pressione ENTER para voltar ao menu" ; menu ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } #======================== FUNÇÃO: lista FIM =============================== # funçao: deleta arquivos de soma deletasoma() { cd $ESTOKDIR 2>>/dev/null ; rm -r $SOMA 2>>/dev/null ; rm -r $SOMA2 2>>/dev/null; rm -r $SOMA3 2>>/dev/null; rm -r $SOMAF 2>>/dev/null ; } #======================== Cadastro COMEÇO ================================== cadastrofornecedor(){ echo echo "------------------------------" echo "*** Cadastro de fornecedor ***" ; echo "------------------------------" cd $FORNECEDORDIR ; # entra no diretorio fornecedor read -e -p "Digite o nome do fornecedor: " "nomefornecedor" ; # pega nome fornecedor [ -z "$nomefornecedor" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomefornecedor.for" ]; then # testa se fornecedor existe echo "Cliente "$nomefornecedor" já existe" ; # se fornecedor existe echo "Deseja continuar?" perguntacontinuar ; # pergunta se deseja continuar fi read -e -p "Codigo: " codigo ; # se existe e você deu ( sim ) continua formulario read -e -p "Nome fantasia: " nomefantasia ; read -e -p "Razão social: " razaosocial ; read -e -p "Ramo de atividade: " ramoatividade ; read -e -p "Endereço: " endereco ; read -e -p "Bairro: " bairro ; read -e -p "Numero: " numero ; read -e -p "Complemento: " complemento ; read -e -p "Cidade: " cidade ; read -e -p "UF: " uf ; read -e -p "CEP: " cep ; read -e -p "País: " pais ; read -e -p "E-mail: " email ; read -e -p "Site: " site ; read -e -p "Física/Jurídica: " fisicajuridica ; read -e -p "CPF/CNPJ: " cpfcnpj ; read -e -p "Inscrição estadual: " inscricaoestadual ; read -e -p "Telefone-1: " telefone1 ; read -e -p "Telefone-2: " telefone2 ; read -e -p "Celular: " celular ; read -e -p "Informações adicionais: " informacoes ; echo "Deseja gravar dados?" ; perguntacontinuar ; # pergunta se deseja gravar dados echo "------------------------------" >> "$nomefornecedor.for" ; # gera arquivo com nome em diretorio fornecedores e gera log echo ${CADASTROFORNECEDOR[0]} "$codigo" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[1]} "$nomefornecedor" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[2]} "$nomefantasia" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[3]} "$razaosocial" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[4]} "$ramoatividade" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[5]} "$endereco" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[6]} "$bairro" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[7]} "$numero" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[8]} "$complemento" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[9]} "$cidade" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[10]} "$uf" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[11]} "$cep" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[12]} "$pais" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[13]} "$email" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[14]} "$site" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[15]} "$fisicajuridica" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[16]} "$cpfcpnj" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[17]} "$inscricaoestadual" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[18]} "$telefone1" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[19]} "$telefone2" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[20]} "$celular" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[21]} "$informacoes" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[22]} "$DATAATUAL" >> "$nomefornecedor.for" ; echo "------------------------------" >> "$nomefornecedor.for" ; echo "******" >> $CADASTROFORNECEDORLOG ; echo "NOME:" "$nomefornecedor.for" >> $CADASTROFORNECEDORLOG ; echo "CODIGO:" "$codigo" >> $CADASTROFORNECEDORLOG ; echo "Data de cadastro:" "$DATAATUAL" >> $CADASTROFORNECEDORLOG ; echo "******" >> $CADASTROFORNECEDORLOG ; less -iC "$nomefornecedor.for" ; # Abre less e lê arquivo criado echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } cadastrocliente() { echo echo "------------------------------" echo " *** Cadastro de cliente ***" ; echo "------------------------------" cd $CLIENTEDIR ; # entra no diretorio cliente read -e -p "Digite o nome do cliente: " "nomecliente" ; # pega nome cliente [ -z "$nomecliente" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomecliente.cli" ]; then # testa se cliente existe echo "Cliente "$nomecliente" já existe" ; # se cliente existe echo "Deseja continuar?" perguntacontinuar ; # pergunta se deseja continuar fi read -e -p "Codigo: " codigo ; # se existe e você deu ( sim ) continua formulario read -e -p "Data de nascimento: " datanascimento ; read -e -p "Sexo: " sexo ; read -e -p "Endereço: " endereco ; read -e -p "Bairro: " bairro ; read -e -p "Numero: " numero ; read -e -p "Complemento: " complemento ; read -e -p "Cidade: " cidade ; read -e -p "UF: " uf ; read -e -p "CEP: " cep ; read -e -p "E-mail: " email ; read -e -p "Física/Jurídica: " fiscajuridica ; read -e -p "CPF/CNPJ: " cpfcnpj ; read -e -p "RG: " rg ; read -e -p "Telefone: " telefone ; read -e -p "Celular: " celular ; read -e -p "Informações adicionais: " informacoes ; echo "Deseja gravar dados?" ; perguntacontinuar ; # pergunta se deseja gravar dados echo "------------------------------" >> "$nomecliente.cli" ; # gera arquivo com nome em diretorio clientes e gera log echo ${CADASTROCLIENTE[0]} "$codigo" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[1]} "$nomecliente" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[2]} "$datanascimento" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[3]} "$sexo" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[4]} "$endereco" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[5]} "$bairro" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[6]} "$numero" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[7]} "$complemento" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[8]} "$cidade" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[9]} "$uf" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[10]} "$cep" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[11]} "$email" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[12]} "$fisicajuridica" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[13]} "$cpfcnpj" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[14]} "$rg" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[15]} "$telefone" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[16]} "$celular" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[17]} "$informacoes" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[18]} "$DATAATUAL" >> "$nomecliente.cli" ; echo "------------------------------" >> "$nomecliente.cli" ; echo "******" >> $CADASTROCLIENTELOG ; echo "NOME:" "$nomecliente.cli" >> $CADASTROCLIENTELOG ; echo "CODIGO:" "$codigo" >> $CADASTROCLIENTELOG ; echo "Data de cadastro:" "$DATAATUAL" >> $CADASTROCLIENTELOG ; echo "******" >> $CADASTROCLIENTELOG ; less -iC "$nomecliente.cli" ; # Abre less e lê arquivo criado echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } cadastroproduto(){ # submenu produto echo echo "------------------------------" ; echo " *** Cadastro de produto ***" ; echo "------------------------------" ; cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Nome do produto: " nomeproduto ; # pega nome do produto [ -z "$nomeproduto" ] && menu ; # se variavel é nula volta ao menu if [ -f "$nomeproduto".prod ];then # verifica se produto existe echo "Produto "$nomeproduto" já existe" ; # se produto existe echo "Deseja continuar?" perguntacontinuar ; # pergunta se deseja continuar fi read -e -p "Unidade: " unidade ; # se existe e você deu ( sim ) continua formulario read -e -p "Categoria: " categoria ; read -e -p "Fornecedor: " fornecedor ; read -e -p "Codigo: " codigo ; read -e -p "Quantidade: " quantidade ; read -e -p "Estoque minimo: " estoqueminimo ; read -e -p "Valor R$: " valor ; read -e -p "Custo R$: " custo ; read -e -p "Descrição: " descricao ; echo "Deseja gravar dados?" ; perguntacontinuar ; # pergunta se deseja gravar dados echo "------------------------------" >> "$nomeproduto.prod" ; # gera arquivo com nome em diretorio produtos e envia dados echo ${CADASTROPRODUTO[0]} "$nomeproduto" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[1]} "$unidade" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[2]} "$categoria" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[3]} "$fornecedor" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[4]} "$codigo" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[5]} "$quantidade" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[6]} "$estoqueminimo" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[7]} "$valor" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[8]} "$custo" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[9]} "$descricao" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[10]} "$DATAATUAL" >> "$nomeproduto.prod" ; echo "------------------------------" >> "$nomeproduto.prod" ; echo "******" >> $CADASTROPRODUTOLOG ; echo "Produto:" "$nomeproduto.prod" >> $CADASTROPRODUTOLOG ; echo "Quantidade:" "$quantidade" >> $CADASTROPRODUTOLOG ; echo "Data de cadastro:" "$DATAATUAL" >> $CADASTROPRODUTOLOG ; echo "******" >> $CADASTROPRODUTOLOG ; trocavirgula ; less -iC "$nomeproduto.prod" ; # Abre less e lê arquivo criado echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } # função: opção menu cadastro opcaocadastro() { echo echo "------------------------------" ; echo " *** Cadastro ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " CADASTRO ; case "$CADASTRO" in [Pp]*) cadastroproduto ;; [Cc]*) cadastrocliente ;; [Ff]*) cadastrofornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Cadastro FIM =================================== #======================== Entrada/Saída COMEÇO =========================== entrada(){ echo echo "------------------------------" ; echo " *** Entrada ***" ; echo "------------------------------" ; cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Digite o nome do produto: " "nomeentrada" ; # pega nome produto entrada [ -z "$nomeentrada" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeentrada.prod" ]; then # testa se produto existe ou não sed -n "2p" "$nomeentrada".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomeentrada".prod ; # mostra sexta linha do arquivo produto sed -n -e "s/^.*QUANTIDADE: //p" "$nomeentrada".prod >> $SOMA ; # envia quantidade do .prod para soma.sum read -p "Digite a quantidade para entrada: " "quantentrada" ; # pega valor digitado echo "$quantentrada" >> $SOMA ; # cria soma.sum com valor digitado paste -sd+ $SOMA | bc >> "$SOMA2" ; # soma arquivos soma.sum e soma2.sum sleep 1 ; # Pausa VALORF=`cat $SOMA2` ; sed -i "s/\(QUANTIDADE:\).*/\1 ${VALORF}/" "$nomeentrada".prod ; # grava soma sed -n "2p" "$nomeentrada".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomeentrada".prod ; # mostra sexta linha do arquivo produto echo "******" >> $ENTRADALOG ; # adiciona linha no log entrada echo "Produto:" "$nomeentrada".prod >> $ENTRADALOG ; # adiciona nome do produto log entrada echo "Quantidade de entrada:" "$quantentrada" >> $ENTRADALOG ; # envia quantidade de entrada para log read -p "Data de entrada: " "dataentrada" ; # pega data entrada echo "Data de entrada:" "$dataentrada" >> $ENTRADALOG ; # adiciona [Data] ao log entrada read -p "Fornecedor: " "fornecedorentrada" ; # pega fornecedor echo "Fornecedor:" "$fornecedorentrada" >> $ENTRADALOG ; # adiciona [Fornecedor] ao log entrada echo "******" >> $ENTRADALOG ; # adiciona linha log entrada read -rsn1 -p "Pressione ENTER para continuar" ; # enter para voltar ao menu deletasoma 2>>/dev/null ; menu ; else # produto entrada não existe echo "Produto "$nomeentrada" não existe" verlistaproduto ; fi } saida(){ echo echo "------------------------------" echo " *** Saída ***" ; echo "------------------------------" cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Digite o nome do produto: " "nomesaida" ; # pega nome produto saida [ -z "$nomesaida" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomesaida.prod" ]; then # testa se produto existe ou não sed -n "2p" "$nomesaida".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomesaida".prod ; # mostra sexta linha do arquivo produto sed -n -e "s/^.*QUANTIDADE: //p" "$nomesaida".prod >> $SOMA ; # envia quantidade do .prod para soma.sum read -p "Digite a quantidade para saída: " "quantsaida" ; # pega valor digitado echo "$quantsaida" >> $SOMA ; # cria soma.sum com valor digitado paste -sd- $SOMA | bc >> "$SOMA2" ; sleep 1 ; # Pausa VALORF=`cat $SOMA2` ; sed -i "s/\(QUANTIDADE:\).*/\1 ${VALORF}/" "$nomesaida".prod ; # grava soma sed -n "2p" "$nomesaida".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomesaida".prod ; # mostra sexta linha do arquivo produto echo "******" >> $SAIDALOG ; echo "Produto:" "$nomesaida".prod >> $SAIDALOG ; # adiciona nome do produto log saida echo "Quantidade de saída:" "$quantsaida" >> $SAIDALOG ; # envia quantidade de saida para log read -p "Data de saída: " "datasaida" ; # pega nome data saida echo "Data de saída:" "$datasaida" >> $SAIDALOG ; # adiciona [Data] ao log saida read -p "Destino/Cliente: " "descli" ; # pega fornecedor echo "Destino/Cliente:" "$descli" >> $SAIDALOG ; # adiciona [Destino/Cliente] ao log saida echo "******" >> $SAIDALOG ; read -rsn1 -p "Pressione ENTER para continuar" ; # enter para voltar ao menu deletasoma 2>>/dev/null ; menu ; else # produto saida nao existe echo "Arquivo "$nomesaida".prod não existe" ; verlistaproduto ; menu ; fi } # função: opção menu entrada/saída opcaoentradasaida(){ read -e -p "Entrada [E] Saída [S] " ENTRADASAIDA ; case "$ENTRADASAIDA" in [Ee]*) entrada ;; [Ss]*) saida ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Entrada/Saída FIM ============================== #======================== Consulta Itens COMEÇO ========================== consultaproduto(){ cd $PRODUTODIR ; echo "------------------------------" ; echo " *** Consultar produtos ***" ; echo "------------------------------" ; cat $PRODUTODIR/*.prod > $LISTALOG ; # cria lista todo conteúdo arquivos .prod echo "Quantidade total de iténs:" `ls -l *.prod | wc -l` >> $LISTALOG ; # Conta todos os arquivos .prod less -iC $LISTALOG ; } consultacliente(){ cd $CLIENTEDIR ; echo "------------------------------" ; echo " *** Consultar clientes ***" ; echo "------------------------------" ; cat $CLIENTEDIR/*.cli > $LISTALOG ; # cria lista todo conteúdo arquivos .prod echo "Quantidade total de iténs:" `ls -l *.cli | wc -l` >> $LISTALOG ; # Conta todos os arquivos .cli less -iC $LISTALOG ; } consultafornecedor(){ cd $FORNECEDORDIR ; echo "------------------------------" ; echo " *** Consultar clientes ***" ; echo "------------------------------" ; $(cat $FORNECEDORDIR/*.for > $LISTALOG) ; # cria lista todo conteúdo arquivos .prod echo "Quantidade total de iténs:" `ls -l *.for | wc -l` >> $LISTALOG ; # Conta todos os arquivos .for less -iC $LISTALOG ; } opcaoconsultaritens(){ echo echo "------------------------------" ; echo " *** Consultar itens ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " CONSULTA ; case "$CONSULTA" in [Pp]*) consultaproduto ;; [Cc]*) consultacliente ;; [Ff]*) consultafornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Consulta Itens FIM ============================ #======================== Busca COMEÇO =================================== buscaproduto(){ echo echo "------------------------------" ; echo " *** Busca produto ***" ; echo "------------------------------" ; cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Nome do produto: " buscaproduto ; # pega nome do produto rm -r $BUSCALOG 2>>/dev/null ; read -p "Buscar: " "buscaconteudo" ; # pega segundo nome da busca echo "" > $BUSCALOG ; # apaga todo conteudo anterior da busca echo "*** Resultados ***" >> $BUSCALOG ; # envia resultados para BUSCALOG echo "--------------------------" >> $BUSCALOG ; echo "--- Itens relacionados ---" >> $BUSCALOG ; grep -EiRl "$buscaproduto|$buscaconteudo" *.prod 2>>/dev/null | sed 's/\.prod//g' >> $BUSCALOG 2>>/dev/null ; # busca palavra nos arquivos .pr od echo "--------------------------" >> $BUSCALOG ; grep -Ei "$buscaproduto|$buscaconteudo" *.prod >> $BUSCALOG 2>>/dev/null ; # busca palavra nos arquivos .prod less -i $BUSCALOG echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } buscacliente(){ echo echo "------------------------------" ; echo " *** Busca cliente ***" ; echo "------------------------------" ; cd $CLIENTEDIR ; # entra no diretorio produtos read -e -p "Nome do cliente: " buscacliente ; # pega nome do cliente rm -r $BUSCALOG 2>>/dev/null ; read -p "Buscar: " "buscaconteudo" ; # pega segundo nome da busca echo "" > $BUSCALOG ; # apaga todo conteudo anterior da busca echo "*** Resultados ***" >> $BUSCALOG ; # envia resultados para BUSCALOG echo "--------------------------" >> $BUSCALOG ; echo "--- Itens relacionados ---" >> $BUSCALOG ; grep -EiRl "$buscacliente|$buscaconteudo" *.cli 2>>/dev/null | sed 's/\.cli//g' >> $BUSCALOG 2>>/dev/null ; # busca palavra nos arquivos .cli echo "--------------------------" >> $BUSCALOG ; $(grep -Ei "$buscacliente|$buscaconteudo" *.cli >> $BUSCALOG 2>>/dev/null) ; # busca palavra nos arquivos .cli less -i $BUSCALOG echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } buscafornecedor(){ echo echo "------------------------------" ; echo " *** Busca fornecedor ***" ; echo "------------------------------" ; cd $FORNECEDORDIR ; # entra no diretorio fornecedor read -e -p "Nome do cliente: " buscafornecedor ; # pega nome do fornecedor rm -r $BUSCALOG 2>>/dev/null ; read -p "Buscar: " "buscaconteudo" ; # pega segundo nome da busca echo "" > $BUSCALOG ; # apaga todo conteudo anterior da busca echo "*** Resultados ***" >> $BUSCALOG ; # envia resultados para BUSCALOG echo "--------------------------" >> $BUSCALOG ; echo "--- Itens relacionados ---" >> $BUSCALOG ; $(grep -EiRl "$buscafornecedor|$buscaconteudo" *.for 2>>/dev/null | sed 's/\.for//g' >> $BUSCALOG 2>>/dev/null) ; # busca palavra nos arquivos .for echo "--------------------------" >> $BUSCALOG ; $(grep -Ei "$buscafornecedor|$buscaconteudo" *.for >> $BUSCALOG 2>>/dev/null) ; # busca palavra nos arquivos .for less -i $BUSCALOG echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } opcaobusca(){ echo echo "------------------------------" ; echo " *** Busca ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " BUSCA ; case "$BUSCA" in [Pp]*) buscaproduto ;; [Cc]*) buscacliente ;; [Ff]*) buscafornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Busca FIM ====================================== #======================== Altera COMEÇO ================================== alterafornecedor(){ cd $FORNECEDORDIR echo "------------------------------" ; echo " *** Alterar Fornecedor ***" ; echo "------------------------------" ; read -e -p "Digite o nome do cliente: " "alterafornecedor" ; # pega nome do arquivo [ -z "$alterafornecedor" ] && menu ; # se variavel é nula volta ao menu if [ -e "$alterafornecedor.for" ]; then echo "Deseja alterar "$alterafornecedor"? " ; perguntacontinuar ; cat "$alterafornecedor.for" ; # mostra conteudo do arquivo read -p "Digite o campo que deseja alterar: " "altera1" ; # pega palavra para alterar read -p "Digite o valor antigo: " "altera2" ; # pega segunda palavra para alterar read -p "Digite o novo valor: " "altera3" ; # pega terceira palavra para alterar sed -e '/'"${altera1^^}"'/ s/'"$altera2"'/'"$altera3"'/' "$alterafornecedor.for" > output.altera ; # gera output com alterações cat output.altera ; # mostra conteudo output echo "Deseja salvar alteração?" perguntacontinuar cat output.altera > "$alterafornecedor.for" rm -r output.altera ; # apaga output echo "******" >> $ALTERADOLOG ; # log Alterados echo "Produto:" "$alterafornecedor.for" >> $ALTERADOLOG ; # log Alterados echo "******" >> $ALTERADOLOG ; # log Alterados else echo "Arquivo "$alterafornecedor" não existe" ; verlistafornecedor ; fi } alteracliente(){ cd $CLIENTEDIR echo "------------------------------" ; echo " *** Alterar Cliente ***" ; echo "------------------------------" ; read -e -p "Digite o nome do cliente: " "alteracliente" ; # pega nome do arquivo [ -z "$alteracliente" ] && menu ; # se variavel é nula volta ao menu if [ -e "$alteracliente.cli" ]; then echo "Deseja alterar $alteracliente? " ; perguntacontinuar ; cat "$alteracliente.cli" ; # mostra conteudo do arquivo read -p "Digite o campo que deseja alterar: " "altera1" ; # pega palavra para alterar read -p "Digite o valor antigo: " "altera2" ; # pega segunda palavra para alterar read -p "Digite o novo valor: " "altera3" ; # pega terceira palavra para alterar sed -e '/'"${altera1^^}"'/ s/'"$altera2"'/'"$altera3"'/' "$alteracliente.cli" > output.altera ; # gera output com alterações cat output.altera ; # mostra conteudo output echo "Deseja salvar alteração?" perguntacontinuar cat output.altera > "$alteracliente.cli" rm -r output.altera ; # apaga output echo "******" >> $ALTERADOLOG ; # log Alterados echo "Produto:" "$alteracliente.cli" >> $ALTERADOLOG ; # log Alterados echo "******" >> $ALTERADOLOG ; # log Alterados else echo "Arquivo "$alteracliente" não existe" ; verlistacliente ; fi } alteraproduto(){ cd $PRODUTODIR echo "------------------------------" ; echo " *** Alterar Produto ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "alteraproduto" ; # pega nome do arquivo [ -z "$alteraproduto" ] && menu ; # se variavel é nula volta ao menu if [ -e "$alteraproduto.prod" ]; then echo "Deseja alterar $alteraproduto? " ; perguntacontinuar ; cat "$alteraproduto.prod" ; # mostra conteudo do arquivo read -p "Digite o campo que deseja alterar: " "altera1" ; # pega palavra para alterar read -p "Digite o valor antigo: " "altera2" ; # pega segunda palavra para alterar read -p "Digite o novo valor: " "altera3" ; # pega terceira palavra para alterar sed -e '/'"${altera1^^}"'/ s/'"$altera2"'/'"$altera3"'/' "$alteraproduto.prod" > output.altera ; # gera output com alterações cat output.altera ; # mostra conteudo output echo "Deseja salvar alteração?" perguntacontinuar cat output.altera > "$alteraproduto.prod" rm -r output.altera ; # apaga output echo "******" >> $ALTERADOLOG ; # log Alterados echo "Produto:" "$alteraproduto.prod" >> $ALTERADOLOG ; # log Alterados echo "******" >> $ALTERADOLOG ; # log Alterados else echo "Arquivo "$alteraproduto" não existe" ; verlistaproduto ; fi } opcaoaltera(){ echo echo "------------------------------" ; echo " *** Alterar ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " ALTERA ; case "$ALTERA" in [Pp]*) alteraproduto ;; [Cc]*) alteracliente ;; [Ff]*) alterafornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Altera FIM ====================================== #======================== Relatorio COMEÇO ================================ opcaorelatorio(){ echo "------------------------------" ; echo " *** Relatorio ***" ; echo "------------------------------" ; cd $PRODUTODIR echo "" > $RELATORIOLOG ; # apaga dados relatorio echo "Quantidade total de arquivos em $PRODUTODIR:" $(find -type f | wc -l) >> $RELATORIOLOG ; echo "Quantidade de produtos cadastrados:" $(sed s/.prod\b/.prod\n/g $CADASTROPRODUTOLOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de clientes cadastrados:" $(sed s/.cli\b/.cli\n/g $CADASTROCLIENTELOG 2>>/dev/null | grep ".cli\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de fornecedores cadastrados:" $(sed s/.for\b/.for\n/g $CADASTROFORNECEDORLOG 2>>/dev/null | grep ".for\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de entrada:" $(sed s/.prod\b/.prod\n/g $ENTRADALOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de saída:" $(sed s/.prod\b/.prod\n/g $SAIDALOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de produtos alterados:" $(sed s/.prod\b/.prod\n/g $ALTERADOLOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de clientes alterados:" $(sed s/.cli\b/.cli\n/g $ALTERADOLOG 2>>/dev/null | grep ".cli\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de fornecedores alterados:" $(sed s/.for\b/.for\n/g $ALTERADOLOG 2>>/dev/null | grep ".for\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de produtos excluidos:" $(sed s/.prod\b/.prod\n/g $EXCLUIDOLOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de clientes excluidos:" $(sed s/.cli\b/.cli\n/g $EXCLUIDOLOG 2>>/dev/null | grep ".cli\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de fornecedores excluidos:" $(sed s/.for\b/.for\n/g $EXCLUIDOLOG 2>>/dev/null | grep ".for\b" | wc -l ) >> $RELATORIOLOG ; deletasoma 2>>/dev/null ; cd $PRODUTODIR ; sed -n -e 's/^.*QUANTIDADE: //p' *.prod >> $SOMA ; paste -sd+ $SOMA | bc >> $SOMAF ; echo "Quantidade total de produtos:" $(cat $SOMAF) >> $RELATORIOLOG ; rm -r $SOMAF 2>>/dev/null sed -n -e 's/^.*VALOR R$: //p' *.prod >> $SOMA2 ; paste -sd+ $SOMA2 | bc >> $SOMAF ; echo "Soma de valor total unitario de cada produtos:" $(cat $SOMAF) >> $RELATORIOLOG ; rm -r $SOMAF 2>>/dev/null sed -n -e 's/^.*CUSTO R$: //p' *.prod >> $SOMA3 ; paste -sd+ $SOMA3 | bc >> $SOMAF ; echo "Soma de custo unitaria de cada produtos:" $(cat $SOMAF) >> $RELATORIOLOG ; less -iC $RELATORIOLOG ; deletasoma 2>>/dev/null ; } #======================== Relatorio FIM =================================== excluifornecedor(){ cd $FORNECEDORDIR ; echo "------------------------------" ; echo " *** Excluir Fornecedor ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "nomeexcluir" ; [ -z "$nomeexcluir" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeexcluir".for ]; then echo "Deseja excluir $nomeexcluir?" ; perguntacontinuar ; rm -r "$nomeexcluir.for" ; echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Produto:" "$nomeexcluir.for" >> $EXCLUIDOLOG ; # log Excluidos echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Arquivo "$nomeexcluir" excluido com sucesso" read -rsn1 -p "Pressione ENTER para continuar" ; menu ; else echo "Arquivo "$nomeexcluir" não existe" ; verlistafornecedor ; fi } excluicliente(){ cd $CLIENTEDIR ; echo "------------------------------" ; echo " *** Excluir Cliente ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "nomeexcluir" ; [ -z "$nomeexcluir" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeexcluir".cli ]; then echo "Deseja excluir $nomeexcluir?" ; perguntacontinuar ; rm -r "$nomeexcluir.cli" ; echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Produto:" "$nomeexcluir.cli" >> $EXCLUIDOLOG ; # log Excluidos echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Arquivo "$nomeexcluir" excluido com sucesso" read -rsn1 -p "Pressione ENTER para continuar" ; menu ; else echo "Arquivo "$nomeexcluir" não existe" ; verlistacliente ; fi } excluiproduto(){ cd $PRODUTODIR ; echo "------------------------------" ; echo " *** Excluir Produto ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "nomeexcluir" ; [ -z "$nomeexcluir" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeexcluir".prod ]; then echo "Deseja excluir $nomeexcluir?" ; perguntacontinuar ; rm -r "$nomeexcluir.prod" ; echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Produto:" "$nomeexcluir.prod" >> $EXCLUIDOLOG ; # log Excluidos echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Arquivo "$nomeexcluir" excluido com sucesso" read -rsn1 -p "Pressione ENTER para continuar" ; menu ; else echo "Arquivo "$nomeexcluir" não existe" ; verlistaproduto ; fi } opcaoexclui(){ echo echo "------------------------------" ; echo " *** Excluir ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " EXCLUIR ; case "$EXCLUIR" in [Pp]*) excluiproduto ;; [Cc]*) excluicliente ;; [Ff]*) excluifornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Excluir FIM ===================================== #======================= Ajuda COMEÇO ===================================== opcaoajuda(){ echo -e " ------------------------------ *** Ajuda *** ------------------------------ -m Menu -c Cadastro -es Entrada/Saída -i Consultar itens -b Busca -a Altera -r Relatorio -x Excluir -h Ajuda -v Versão ------------------------------ " read -rsn1 -p "Pressione ENTER para continuar" ; clear ; } #========================= Ajuda FIM ====================================== #======================= Menu Principal COMEÇO =========================== # função: menu principal menu() { while true $MENUPRINCIPAL != "menuloop" do trocavirgula ; clear ; cat<<EOF ============================== Estok SH 1.2b ------------------------------ Entre com uma opção: 1 ) Cadastro 2 ) Entrada/Saída 3 ) Consultar iténs 4 ) Buscar 5 ) Alterar 6 ) Relatório 7 ) Excluir 8 ) Ajuda Q ) Sair ------------------------------ EOF echo "Digite a opção desejada" read -e -p "Menu: " opcaomenu # pega opção menu echo "------------------------------" case "$opcaomenu" in # variavel do menu para entar 1) opcaocadastro ; ;; 2) opcaoentradasaida ; ;; 3) opcaoconsultaritens ; ;; 4) opcaobusca ; ;; 5) opcaoaltera ; ;; 6) opcaorelatorio ; ;; 7) opcaoexclui ; ;; 8) opcaoajuda ; ;; Q|q) exit 0 ; ;; esac done } #======================= Menu Principal FIM ============================== #======================== Parametros COMEÇO =============================== # case: parametros case $1 in "-m") menu ; ;; "-c") opcaocadastro ; ;; "-es") opcaoentradasaida ; ;; "-i") opcaoconsultaritens ; ;; "-b") opcaobusca ; ;; "-a") opcaoaltera ; ;; "-r") opcaorelatorio ; ;; "-x") opcaoexclui ; ;; "-h") opcaoajuda ; ;; "-v") echo "Estok SH versão - 1.2b" ; ;; *) echo -e "Opção inválida! \nentre com parametro -h para ajuda" exit 1 ; ;; esac #======================== Parametros FIM =================================
Alterando resolução de monitor externo
Instalando a última versão estável do Eclipse com uma única linha
Acesso remoto via SSH sem senha
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Wifi não funciona no Aspire ES 15 com o Debian (8)
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta