Enviado em 17/08/2020 - 19:52h
Boa noite,#!/bin/bash # DECLARAÇÃO: Variáveis Locais. local=$3 arquivo=$2 MENSAGEM_USO=" Uso: $(basename "$0") [OPÇÕES] DESCRIÇÃO: Instala e gerência os programas instalado pelo código fonte. Argumentos: -i <nome.ext> <caminho> Instala o programa. -h Mostra esta tela de ajuda e sai. -l Lista os programas instalados. -s <nome> Pesquisa os aquivos instalados. -u <nome> Desinstala o programa. -w Exibe os caminhos dos programas instalados. -v Mostra a versão do programa e sai. OBSERVAÇÕES: Os argumentos -i necessitam que sejam expresso o nome do arquivo junto com a extenção do arquivo, além do caminho onde está localizado o arquivo. USO: installsrc -i leafpad-0.8.17.tar.gz /home/mac/Downloads/ Os argumentos -u necessitam que sejam expresso o nome do arquivo. USO: installsrc -u leafpad " arq_caminho=" ################### # # Autor: Mac Brener - Skylen # Local: /home/.programasrc/logs # Data: $("date") # # DESCRIÇÃO: # Arquivo para registro dos caminhos dos programas # instalados. Utilizado para a desinstalação e outros # funcionabilidades do installsrc. # # ################### # # <CAMINHO> # " arq_programas=" ################### # # Autor: Mac Brener - Skylen # Local: /home/.programasrc/logs # Data: $("date") # # DESCRIÇÃO: # Arquivo para registro dos nomes dos programas # instalados. Utilizado para a desinstalação e outros # funcionabilidades do installsrc. # # ################### # # <NOME> # " nome=" ##################################################### PROGRAMA: ${nome_arquivo} DATA: `date` " #Variáveis para verificar os arquivos. install=INSTALL make=Makefile Configure=configure # Variáveis para a desistalação. programa=$(grep $arquivo /home/.programasrc/logs/caminho.log | cut -d"/" -f5) caminho_duplicado=$(grep $arquivo /home/.programasrc/logs/caminho.log | uniq -d | cut -d"/" -f5) # DECLARAÇÃO: Funções. desinstalar(){ if test -z "${caminho_duplicado}"; then if [ -d "/home/.programasrc/programas/${programa}" ]; then cd /home/.programasrc/programas/${programa} make uninstall && make clean echo echo -e "Programa desinstalado com sucesso!!" sleep 1.7 clear exit 0 else echo -e "Programa não encontrado." exit 1 fi else cd /home/.programasrc/programas/${caminho_duplicado} make uninstall && make clean echo echo -e "Programa desinstalado com sucesso!!" sleep 1.7 clear exit 0 fi } instalar() { if [ -e "/home/.programasrc/programas/${nome_arquivo}/${Configure}" ]; then ./configure && make && make clean && make install echo echo "Trabalho Concluido!!!!!" sleep 1.7 clear exit 0 else make && make clean && make install echo echo "Trabalho Concluido!!!!!" sleep 1.7 echo clear exit 0 fi } verificar_arquivos(){ cd /home/.programasrc/programas/${nome_arquivo} echo "${nome}" >> /home/.programasrc/logs/programas.log echo "${pasta_fonte}/${nome_arquivo}" >> /home/.programasrc/logs/caminho.log clear # -> Condicional verifica se os arquivos se encontra na pasta especificada. if [ -e "${install}" ]; then echo "Arquivo ${install} se encontra." echo sleep 1 instalar elif [ -e "${Configure}" ]; then echo "Arquivo ${Configure} se encontra." echo instalar elif [ -e "${make}" ]; then echo "Arquivo ${make} se encontra." sleep 1 echo instalar else echo "Arquivo inexistente." sleep 1 xdg-open ${pasta_fonte}/${nome_arquivo} # -> Abre a pasta do programa. clear exit 1 fi } extrair(){ cd ${pasta_fonte} # Variáveis para a comparação. for pesquisa_arq in $(ls -1 *.{tar.gz,tar,tar.bz,tar.bz2,tar.xz,zip,tgz} 2>/dev/null); do NC=$(awk -F'.' '{print NF}' <<< ${pesquisa_arq}); if ((NC>3));then extencao=$(cut -d'.' -f$((NC-1))- <<< ${pesquisa_arq}) nome_arquivo=$(cut -d'.' -f1,-$((NC-2)) <<< ${pesquisa_arq}) else nome_arquivo=$(cut -d'.' -f1 <<< ${pesquisa_arq}) extencao=$(cut -d'.' -f1- <<< ${pesquisa_arq}) fi done if [ "${extencao}" == "tar.gz" ]; then tar -xzvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tgz" ]; then tar -xzvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar.bz" ]; then tar -xjvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar.bz2" ]; then tar -jxvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar.xz" ]; then tar -xJvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "zip" ]; then cd /home/.programasrc/programas unzip -v ${pesquisa_arq} rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar" ]; then tar -xvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos else clear echo "Ouve algum erro!!!" echo echo " :(" echo exit 1 fi } copiar_arquivo(){ if ! [ -e ${pasta_fonte}/${arquivo} ]; then cp -r ${local}/${arquivo} /home/.programasrc/fontes extrair else echo -e "Arquivo existente!!" echo -e "Començando extração..." extrair fi } # Função verifica a não exitência das pastas e arquivos. verificar_dados(){ if [ `whoami` != 'root' ]; then echo "Usuário root não está logado." echo "Saindo..." fi # Variável ficará salva no arquivo .bashrc usado na desistalação. # Condicinal verifica se não existe a variável. if ! grep pasta_fonte /root/.bashrc >> /dev/null; then echo "# Variáveis usadas para a execução do programa installsrc." >> /root/.bashrc echo "# Mais informações digite no terminal: installsrc [ -h ]" >> /root/.bashrc echo "export pasta_fonte=/home/.programasrc/fontes" >> /root/.bashrc echo "Variável criada!" fi # Local ondes os programas instalados irão ficar. # Variável ficará salva no arquivo .bashrc usado na desistalação. # Condicinal verifica se não existe a variável. if ! grep pasta_progrmas /root/.bashrc >> /dev/null; then echo "export pasta_programas=/home/.programasrc/programas" >> /root/.bashrc echo "Variável criada!" fi if [ ! -d "/home/.programasrc" ]; then echo "Criando a pasta: programasrc" sleep 0.7 mkdir -m 775 /home/.programasrc fi if [ ! -d "/home/.programasrc/programas" ]; then echo "Criando a pasta: programas" sleep 0.6 mkdir -m 775 /home/.programasrc/programas fi if [ ! -d "/home/.programasrc/fontes" ]; then echo "Criando a pasta: fontes" sleep 0.6 mkdir -m 775 /home/.programasrc/fontes fi if [ ! -d "/home/.programasrc/logs" ]; then echo "Criando a pasta: logs" sleep 0.6 mkdir -m 775 /home/.programasrc/logs fi if [ ! -e "/home/.programasrc/logs/programas.log" ]; then echo "Criando a arquivo: programas.log" sleep 0.7 echo "${arq_programas}" >> /home/.programasrc/logs/programas.log fi if [ ! -e "/home/.programasrc/logs/caminho.log" ]; then echo "Criando a arquivo: caminho.log" echo "${arq_caminho}" >> /home/.programasrc/logs/caminho.log sleep 0.7 fi if [ ! -e "/root/.bashrc" ]; then echo "Criando a arquivo: bashrc" sleep 0.7 fi if ! [ -e ${pasta_fonte}/${arquivo} ]; then cp -r ${local}/${arquivo} /home/.programasrc/fontes extrair else echo -e "Arquivo existente!!" echo -e "Començando extração..." extrair fi } ################### # Chama a ajuda. if test -z "$1"; then echo "${MENSAGEM_USO}" exit 0 else # Gerência os argumentos. while test -z "$1" do case "$1" in -i) verificar_dados ;; -h) echo "${MENSAGEM_USO}" exit 0 ;; -l) clear echo cat /home/.programasrc/logs/programas.log echo exit 0 ;; -s) clear echo grep ${arquivo} /home/.programasrc/logs/programas.log echo exit 0 ;; -u) desinstalar ;; -w) clear echo cat /home/.programasrc/logs/caminho.log echo exit 0 ;; -v) echo -n $(basename "$0") # Extrai a versão diretamente dos cabeçalhos do programa grep '^# Versão ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# exit 0 ;; *) echo Opção inválida: "$1" exit 1 ;; esac done fi
Enviado em 17/08/2020 - 21:04h
Você esta tentando chamar array que não esta definida varias vezes.${pasta_fonte}Seu script já esta grande sugiro você usar o programinha: Shellcheck
Enviado em 17/08/2020 - 21:25h
Enviado em 17/08/2020 - 22:26h
Enviado em 17/08/2020 - 22:46h
Enviado em 17/08/2020 - 22:51h
Você pode executar ele em modo Debug para ver o erro/problema.bash -x script.sh
Enviado em 17/08/2020 - 23:05h
Enviado em 22/08/2020 - 16:23h
Boa tarde,#!/bin/bash # # DECLARAÇÃO: Variáveis Locais. local="$3" arquivo="$2" PFONTE="/home/.programasrc/fontes" data=$(date) MENSAGEM_USO=" Uso: $(basename "$0") [OPÇÕES] DESCRIÇÃO: Instala e gerência os programas instalado pelo código fonte. Argumentos: -i <nome.ext> <caminho> Instala o programa. -h Mostra esta tela de ajuda e sai. -l Lista os programas instalados. -s <nome> Pesquisa os aquivos instalados. -u <nome> Desinstala o programa. -w Exibe os caminhos dos programas instalados. -v Mostra a versão do programa e sai. OBSERVAÇÕES: Os argumentos -i necessitam que sejam expresso o nome do arquivo junto com a extenção do arquivo, além do caminho onde está localizado o arquivo. USO: installsrc -i leafpad-0.8.17.tar.gz /home/mac/Downloads/ Os argumentos -u necessitam que sejam expresso o nome do arquivo. USO: installsrc -u leafpad" arq_caminho=" ################### # # Autor: Mac Brener - Skylen # Local: /home/.programasrc/logs # Data: `date` # # DESCRIÇÃO: # Arquivo para registro dos caminhos dos programas # instalados. Utilizado para a desinstalação e outros # funcionabilidades do installsrc. # # ################### # # <CAMINHO> # " arq_programas=" ################### # # Autor: Mac Brener - Skylen # Local: /home/.programasrc/logs # Data: `date` # # DESCRIÇÃO: # Arquivo para registro dos nomes dos programas # instalados. Utilizado para a desinstalação e outros # funcionabilidades do installsrc. # # ################### # # <NOME> # " nome=" ##################################################### PROGRAMA: ${nome_arquivo} DATA: `date` " #Variáveis para verificar os arquivos. install=INSTALL make=Makefile Configure=configure # DECLARAÇÃO: Funções. desinstalar(){ # Variáveis para a desistalação. programa=$(grep "${arquivo}" /home/.programasrc/logs/caminho.log | cut -d"/" -f5) caminho_duplicado=$(grep "${arquivo}" /home/.programasrc/logs/caminho.log | uniq -d | cut -d"/" -f5) if test -z "${caminho_duplicado}"; then if [ -d "/home/.programasrc/programas/${programa}" ]; then cd /home/.programasrc/programas/"${programa}" make uninstall && make clean echo echo -e "Programa desinstalado com sucesso!!" sleep 1.7 clear exit 0 else echo -e "Programa não encontrado." exit 1 fi else cd /home/.programasrc/programas/"${caminho_duplicado}" make uninstall && make clean echo echo -e "Programa desinstalado com sucesso!!" sleep 1.7 clear exit 0 fi } instalar() { if [ -e "/home/.programasrc/programas/${nome_arquivo}/${Configure}" ]; then ./configure && make && make clean && make install echo echo "Trabalho Concluido!!!!!" sleep 1.7 clear exit 0 else make && make clean && make install echo echo "Trabalho Concluido!!!!!" sleep 1.7 echo clear exit 0 fi } verificar_arquivos(){ cd /home/.programasrc/programas/"${nome_arquivo}" || exit echo "${nome}" >> /home/.programasrc/logs/programas.log echo "${PFONTE}/${nome_arquivo}" >> /home/.programasrc/logs/caminho.log clear # -> Condicional verifica se os arquivos se encontra na pasta especificada. if [ -e "${install}" ]; then echo "Arquivo ${install} se encontra." echo sleep 1 instalar elif [ -e "${Configure}" ]; then echo "Arquivo ${Configure} se encontra." echo instalar elif [ -e "${make}" ]; then echo "Arquivo ${make} se encontra." sleep 1 echo instalar else echo "Arquivo inexistente." sleep 1 xdg-open ${PFONTE}/${nome_arquivo} # -> Abre a pasta do programa. clear exit 1 fi } extrair(){ cd ${PFONTE} # Variáveis para a comparação. for pesquisa_arq in $(ls -1 *.{tar.gz,"tar",tar.bz,tar.bz2,tar.xz,"zip",tgz} 2>/dev/null); do NC=$(awk -F'.' '{print NF}' <<< ${pesquisa_arq}); if ((NC>3));then extencao=$(cut -d'.' -f$((NC-1))- <<< ${pesquisa_arq}) nome_arquivo=$(cut -d'.' -f1,-$((NC-2)) <<< ${pesquisa_arq}) else nome_arquivo=$(cut -d'.' -f1 <<< ${pesquisa_arq}) extencao=$(cut -d'.' -f1- <<< ${pesquisa_arq}) fi done if [ "${extencao}" == "tar.gz" ]; then tar -xzvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tgz" ]; then tar -xzvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar.bz" ]; then tar -xjvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar.bz2" ]; then tar -jxvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar.xz" ]; then tar -xJvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "zip" ]; then3 cd /home/.programasrc/programas/ unzip -v ${pesquisa_arq} rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos elif [ "${extencao}" == "tar" ]; then tar -xvf ${pesquisa_arq} -C /home/.programasrc/programas rm ${pesquisa_arq} echo echo "Extração concluida!!!" sleep 1 verificar_arquivos else clear echo "Ouve algum erro!!!" echo echo " :(" echo exit 1 fi } copiar_arquivo(){ if ! [ -e ${PFONTE}/${arquivo} ]; then cp -r ${local}/${arquivo} /home/.programasrc/fontes extrair else echo -e "Arquivo existente!!" echo -e "Començando extração..." extrair fi } # Função verifica a não exitência das pastas e arquivos. verificar_dados(){ if [ $(whoami) != 'root' ]; then echo "Usuário root não está logado." echo "Saindo..." fi if [ ! -d "/home/.programasrc" ]; then echo "Criando a pasta: programasrc" sleep 0.7 mkdir -m 775 /home/.programasrc fi if [ ! -d "/home/.programasrc/programas" ]; then echo "Criando a pasta: programas" sleep 0.6 mkdir -m 775 /home/.programasrc/programas fi if [ ! -d "/home/.programasrc/fontes" ]; then echo "Criando a pasta: fontes" sleep 0.6 mkdir -m 775 /home/.programasrc/fontes fi if [ ! -d "/home/.programasrc/logs" ]; then echo "Criando a pasta: logs" sleep 0.6 mkdir -m 775 /home/.programasrc/logs fi if [ ! -e "/home/.programasrc/logs/programas.log" ]; then echo "Criando a arquivo: programas.log" sleep 0.7 echo "${arq_programas}" >> /home/.programasrc/logs/programas.log fi if [ ! -e "/home/.programasrc/logs/caminho.log" ]; then echo "Criando a arquivo: caminho.log" echo "${arq_caminho}" >> /home/.programasrc/logs/caminho.log sleep 0.7 fi if [ ! -e "/root/.bashrc" ]; then echo "Criando a arquivo: bashrc" sleep 0.7 fi if ! [ -e ${PFONTE}/${arquivo} ]; then cp -r ${local}/${arquivo} /home/.programasrc/fontes extrair else echo -e "Arquivo existente!!" echo -e "Començando extração..." extrair fi } ################### # Chama a ajuda. if test -z "$1"; then echo "${MENSAGEM_USO}" exit 0 else # Gerência os argumentos. while test -z "$1" do case "$1" in -i) verificar_dados ;; -h) echo "${MENSAGEM_USO}" exit 0 ;; -l) clear echo cat /home/.programasrc/logs/programas.log echo exit 0 ;; -s) clear echo grep "${arquivo}" /home/.programasrc/logs/programas.log echo exit 0 ;; -u) desinstalar ;; -w) clear echo cat /home/.programasrc/logs/caminho.log echo exit 0 ;; -v) #echo -n "$(basename $0)" # Extrai a versão diretamente dos cabeçalhos do programa #grep '^# Versão ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# #exit 0 ;; *) echo Opção inválida: "$1" exit 1 ;; esac done fi
Enviado em 22/08/2020 - 17:47h
Não é necessário do laço for, o comando ls e nem a lista../installsrc -i leafpad-0.8.18.1.tar.gz /home/mac/Downloads/
arguivo="$2"
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Solução rápida para o problema do Network Manager conectar mas não navegar
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
Como rodo essa suinaria? [RESOLVIDO] (6)
Problemas latentes de performance no Ubuntu 25.04 (1)