concatena o argumento da data em uma string

1

meu programa principal recebe um registro de data e hora com o formato da data e da hora, separados por uma vírgula, mas ainda é uma string e um argumento:

#source main.sh '2015-02-10 00:00:00'

Agora, desejo fornecer o registro de data e hora automaticamente ao programa executando o script a seguir. Meu problema é que, eu deveria manter o espaço entre a data e hora e a saída da primeira linha ou o valor de TIMESTAMP é dois argumentos, um para a data e outro do tempo, que contradiz o número permitido de argumentos passados para o main.sh.

TIMESTAMP=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
COMMAND=${TARGET}" "${TIMESTAMP}
#source $COMMAND
echo $TIMESTAMP

a saída é:

   2015-02-04 15:55:50

Existe alguma maneira de juntar a data e a hora de TIMESTAMP como apenas um argumento? plz ser informado de que eu deveria manter o espaço entre a hora e a data.

    
por Saman 16.03.2015 / 13:32

1 resposta

0

Atualizar :

Por favor, tente o seguinte trecho:

TIMESTAMP=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
source $TARGET "$TIMESTAMP"

Para evitar a citação do seu argumento TIMESTAMP, por que não usar o iso8601 T delimiter?

A data e a hora podem ser uma string: 2014-02-04T13:49:40

E você pode usar esse formato como entrada de data:

$ date --date='2014-02-04T13:49:40' 
Tue Feb  4 13:49:40 CET 2014

Se o seu script de destino só puder entender datetime com um espaço, armazene-o desta forma:

TIMESTAMP="$(printf "%q" "$(date --date='40 days ago' '+%F %T')")"

O espaço será escapado:

$ echo $TIMESTAMP
2015-02-04\ 14:04:51

Alternativamente, você pode escapar de citações como esta:

COMMAND="$TARGET \"$TIMESTAMP\""
    
por Sylvain Pineau 16.03.2015 / 13:53