Script não funciona e não apresenta erro [RESOLVIDO]

1. Script não funciona e não apresenta erro [RESOLVIDO]

Mac
Skylen

(usa Debian)

Enviado em 17/08/2020 - 19:52h

Boa noite,

Montei um script para instalar programas. Porém quando executo ./script -h, por exemplo, ele não apresenta nenhuma saída ou se qualquer erro.


#!/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
 


Agradeço pela ajuda!!


  


2. Re: Script não funciona e não apresenta erro

aguamole
aguamole

(usa KUbuntu)

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
Eu usei ele para achar o problema no seu script sem ler ele todo.
Onde chega na primeira chamada de array ele diz "^-- SC2154: pasta_fonte is referenced but not assigned."
Tchau ^^

CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.


3. Re: Script não funciona e não apresenta erro [RESOLVIDO]

Mauricio Ferrari
maurixnovatrento

(usa Slackware)

Enviado em 17/08/2020 - 21:25h


shellcheck. Nem conhecia. Vou ver se tem no repo do mint.

___________________________________
Conhecimento não se Leva para o Túmulo.


4. Re: Script não funciona e não apresenta erro

aguamole
aguamole

(usa KUbuntu)

Enviado em 17/08/2020 - 22:26h

mauricio123 escreveu:


shellcheck. Nem conhecia. Vou ver se tem no repo do mint.

___________________________________
Conhecimento não se Leva para o Túmulo.


A que você pode experimentar sem instalar: https://www.shellcheck.net/
Click em "Load random exemples" para você receber exemplo de script.
Ou você pode colar o script shell do amigo acima ele vai fazer varias recomendação em verde e chamar a atenção em amarelo e erros graves são em vermelho.

CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.


5. Re: Script não funciona e não apresenta erro [RESOLVIDO]

Carlos APC
Carlos_Cunha

(usa Linux Mint)

Enviado em 17/08/2020 - 22:46h

mauricio123 escreveu:


shellcheck. Nem conhecia. Vou ver se tem no repo do mint.

___________________________________
Conhecimento não se Leva para o Túmulo.


Também, achei muito legal!!!

#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#



6. Re: Script não funciona e não apresenta erro [RESOLVIDO]

Carlos APC
Carlos_Cunha

(usa Linux Mint)

Enviado em 17/08/2020 - 22:51h

Você pode executar ele em modo Debug para ver o erro/problema.


bash -x script.sh
 


#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#



7. Re: Script não funciona e não apresenta erro [RESOLVIDO]

Mauricio Ferrari
maurixnovatrento

(usa Slackware)

Enviado em 17/08/2020 - 23:05h


aguamole escreveu:

mauricio123 escreveu:


shellcheck. Nem conhecia. Vou ver se tem no repo do mint.

___________________________________
Conhecimento não se Leva para o Túmulo.


A que você pode experimentar sem instalar: https://www.shellcheck.net/
Click em "Load random exemples" para você receber exemplo de script.
Ou você pode colar o script shell do amigo acima ele vai fazer varias recomendação em verde e chamar a atenção em amarelo e erros graves são em vermelho.

CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.


ok vou testar.

___________________________________
Conhecimento não se Leva para o Túmulo.


8. Re: Script não funciona e não apresenta erro

Mac
Skylen

(usa Debian)

Enviado em 22/08/2020 - 16:23h

Boa tarde,

Bom o que eu fiz:
1) Defini a variável pasta_fonte. Alterei o nome para PFONTE.
2) Tentei rodar o comando bash -x não apresentou nada na primeira vez.
3) Tentei no shellcheck, apresentou alguns error, mas aparentemente não prejudiciais para o código
a) Fiz algumas alterações sugeridas, mas depois desfiz algumas.
A maiorias dos erros era o uso do `` e aspas duplas nas variáveis.
4) Tive a ideia de colocar #!/bin/bash -x, assim como com o comando bash -x
apresentou a mesma saída de erro. Porém não estou conseguindo achar a solução.

#!/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
	
 


Nota: A linha não será essa da imagem, pois remove alguns comentários para reduzir algumas linhas para colocar aqui.


9. Re: Script não funciona e não apresenta erro

lurke
thelurkening

(usa Outra)

Enviado em 22/08/2020 - 16:43h

zzzzz


10. Re: Script não funciona e não apresenta erro

Mac
Skylen

(usa Debian)

Enviado em 22/08/2020 - 17:07h

Teste a sua ideia, porém não deu certo o bash apresenta erro no local onde foi acionando a lista.



11. Re: Script não funciona e não apresenta erro

lurke
thelurkening

(usa Outra)

Enviado em 22/08/2020 - 17:34h

.


12. Re: Script não funciona e não apresenta erro [RESOLVIDO]

Mac
Skylen

(usa Debian)

Enviado em 22/08/2020 - 17:47h

Não é necessário do laço for, o comando ls e nem a lista.

A entrada do comando é essa:

./installsrc -i leafpad-0.8.18.1.tar.gz /home/mac/Downloads/
 


No código eu tenho eu tenho essa variável:

arguivo="$2"
 


Aquela parte do código só separa o nome do arquivo e a extensão, só que antes eu precisava
ler o arquivo dentro da pasta, porém agora já tenho o nome do arquivo.
A condicional separava quando .tar.gz >> com dois pontos
A condicional separava quando .tar >> e com um pontos

Agora só preciso reproduzir isso...




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts