shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Configurando e testando variáveis


From: Alfredo Casanova
Subject: Re: [shell-script-pt] Configurando e testando variáveis
Date: Wed, 15 Jul 2020 01:36:15 -0300

Você está executando esse script na crontab?

Faça um teste, mande o resultado do comando "env" por dentro do script pra um arquivo temporário e compare a saída com o mesmo comando no shell interativo

Em ter, 14 de jul de 2020 20:32, Jamenson Ferreira Espindula de Almeida Melo <jafesp@gmail.com> escreveu:
Saudações.

Pessoal, até onde sei, um comando emitido em linha de comandos estamos
no chamado _shell interativo_. Por outro lado, comandos em um arquivo de
"script" estamos no chamado _shell não interativo_.

Dadas tais premissas, minha pergunta é: a configuração e testagem de
variáveis no ambiente de shell GNU Bash obedecem à mesma sintaxe ou
existem diferenças?

A situação: eu uso muito um aplicativo chamado "rclone" para produzir
cópias de segurança de arquivos na nuvem. O "rclone" exige um arquivo
previamente configurado para acessar os armazenamentos online. Por
questões de segurança, esse arquivo de configuração de armazenamentos
online pode ser cifrado mediante inserção de senha. Para decifrar,
claro, insere-se a senha.

Ocorre que tal mecanismo cria um problema quando se deseja usar o
"rclone" em scripts, ou seja, _sem_ ser no modo interativo (como haverá
a inserção da senha para decifrar o arquivo de configuração se não se
está no modo interativo?) Para solucionar tal problema, o "rclone"
obedece a uma variável de ambiente chamada "RCLONE_CONFIG_PASS". Quando
configurada com a senha, o arquivo de configuração do "rclone" é
decifrado e a execução ocorre normalmente.

A minha intenção então é _testar_ se a variável de ambiente
"RCLONE_CONFIG_PASS" já está configurada (independentemente se contém a
senha correta ou errada) e _ignorar_ nos scripts a chamada ao comando de
configuração.


O problema: o modo recomendado pelos desenvolvedores do "rclone" para
configurar a variável "RCLONE_CONFIG_PASS" é este:

 = = = = = Início de transcrição = = = = =

#!/bin/echo Source this file don't run it
echo "Senha, por favor ..."
read -s RCLONE_CONFIG_PASS
export RCLONE_CONFIG_PASS

 = = = = = Fim de transcrição = = = = =


Eu tentei isto em um arquivo de script e deu errado:

 = = = = = Início de transcrição = = = = =

if env test -n "${RCLONE_CONFIG_PASS}";
then
echo "OK";
else
echo "Senha, por favor ...";
read -s RCLONE_CONFIG_PASS;
export RCLONE_CONFIG_PASS;
fi

exit 0

 = = = = = Fim de transcrição = = = = =


Porém, na linha de comandos, o seguinte deu certo:

if env test -n "${RCLONE_CONFIG_PASS}"; then echo "OK"; else echo \
"Senha, por favor ..."; read -s RCLONE_CONFIG_PASS; export
RCLONE_CONFIG_PASS; fi


Daí as minhas observações iniciais: o comando em um arquivo de "script"
(shell não interativo), deu _errado_.

O comando emitido em linha de comandos (shell interativo) deu _certo_.


Isso é erro meu? Existem mesmo diferenças?


Desculpe-me o _longo_ texto.


Muito grato qualquer ajuda!


Jamenson Ferreira Espindula de Almeida Melo
Jaboatão dos Guararapes, Pernambuco, Brasil
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave PGP:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180

_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]