Erro ao passar um comando variable to date em um shell script

1

Estou tentando converter um horário GMT para AEST Time com o código abaixo e ele está funcionando bem. date --date='TZ="GMT" 2017/07/24 12:00:00' "+%Y-%m-%d %H:%M:%S"

Quando eu passo a variável de data como um parâmetro para a consulta acima, como abaixo:

RequestDate="2017/07/24 12:00:00"

date --date='TZ="GMT" ${RequestDate}' "+%Y-%m-%d %H:%M:%S".

Estou recebendo o erro:

date: invalid date 'TZ="GMT" ${RequestDate}'.

Eu tentei com vários encapsulamentos de aspas simples e aspas duplas.

    
por MAK33 06.08.2018 / 20:39

2 respostas

1

Existem diferentes tipos de citações no shell e diferentes soluções possíveis. A outra outra resposta está correta, os valores entre aspas simples não são expandidos. Mas você quer o TZ como parte do argumento e deseja que o argumento contenha aspas. Você pode conseguir isso adicionando uma parte em aspas simples e uma parte entre aspas duplas sem separador.

date --date='TZ="GMT" '"${RequestDate}" "+%Y-%m-%d %H:%M:%S"

Você também pode usar uma barra invertida

date --date="TZ=\"GMT\" ${RequestDate}" "+%Y-%m-%d %H:%M:%S"
    
por 06.08.2018 / 21:05
2

Se você colocar uma variável em uma string entre aspas simples, o shell não expandirá a variável. Experimente:

$ TZ=GMT date --date "${RequestDate}" "+%Y-%m-%d %H:%M:%S"
    
por 06.08.2018 / 20:44