Use o sinal asterisco no valor de variáveis env

0

Eu preciso definir uma variável de ambiente com o valor de uma tarefa cron. O valor seria o seguinte:

"0 0 * * * *"

Ele será executado como um comando bash no linux. É possível? Como eu poderia achá-lo?

    
por freitas 17.07.2018 / 16:50

1 resposta

2

Sim, é possível. Você não precisa fazer nada especial, exceto seguir a sintaxe normal da linguagem de programação.

Por exemplo, no Bash você usaria:

export myvar="0 0 * * *"

Em Python:

os.environ["myvar"] = "0 0 * * *"

Ou se o valor realmente incluir aspas como no seu exemplo:

export myvar="\"0 0 * * *\""

os.environ["myvar"] = "\"0 0 * * *\""

Provavelmente, você está vendo problemas ao fazer isso em sh / bash, porque echo $myvar parece gerar o valor errado. Mas o valor armazenado na variável provavelmente está perfeitamente correto - o problema é como você está tentando produzir o valor.

Em sh / bash, a expansão de variáveis é feita como uma etapa separada antes da expansão de curingas. Se o nome da variável for deixado sem aspas, o comando original echo $myvar será primeiro expandido para o valor correto echo 0 0 0 * * - e então as etapas de divisão de palavras e glob são feitas, transformando sua saída em uma lista de nomes de arquivos.

(Sim, isso também pode acontecer no momento da atribuição. No entanto, eu vi muito mais comumente que as pessoas esquecem isso na hora da saída; atribuir um valor com espaços provavelmente lembra as pessoas de citações.)

Uma maneira correta de gerar a variável seria echo "$myvar" . (Para inspecionar o tipo de variável e o conteúdo bruto, o bash tem declare -p myvar .)

    
por 17.07.2018 / 17:03

Tags