Não entendo por que a expressão de matriz está correta.
$ set -eu
$ echo "${envs[*]}"
$ echo "${envs}"
bash: envs: unbound variable
Como posso fazer o bash falhar também nessa expansão de array?
Não entendo por que a expressão de matriz está correta.
$ set -eu
$ echo "${envs[*]}"
$ echo "${envs}"
bash: envs: unbound variable
Como posso fazer o bash falhar também nessa expansão de array?
Dado um script como o abaixo, se eu tentar redirecionar o stderr para um arquivo, o arquivo será truncado no ponto em que tee
for usado:
$ cat test.sh
#!/bin/bash
set -eux
echo before
echo '{ "foo": "bar" }' | tee /dev/stderr | jq .foo
echo after
$ ./test.sh 2> log
before
"bar"
after
$ cat log
{ "foo": "bar" }
+ echo after
O log
arquivo deve ter toda a saída stderr. Tudo o que vejo se executo o mesmo script sem redirecionar:
$ ./test.sh
+ echo before
before
+ echo '{ "foo": "bar" }'
+ tee /dev/stderr
+ jq .foo
{ "foo": "bar" }
"bar"
+ echo after
after
Então, por que só vejo as linhas que vêm depois tee
? Usar 2>>
não parece ajudar.
Não entendo por que isso está acontecendo. Como posso verificar a saída e ainda ter a capacidade de redirecionar todo o script stderr para um arquivo?
Estou tentando encontrar contêineres docker de longa duração.
A primeira execução docker ps --format '{{.RunningFor}}'
retorna algo como
About a minute ago
11 minutes ago
que é completamente inútil para o processamento da máquina. Não consegui encontrar nenhuma maneira de alterar isso e o mesmo valor está na saída JSON.
A seguir tentei docker ps --format '{{.CreatedAt}}'
. Isso retorna valores como 2019-01-03 12:49:46 +0000 UTC
.
O problema é que isso não é ISO 8601 nem qualquer outro formato comum. O que é pior, tentar analisá-lo com date
dá:
date --date="$DATE"
date: invalid date ‘2019-01-03 12:49:46 +0000 UTC’
Espero que haja uma maneira melhor de obter um valor de milissegundos de época do que processar o valor manualmente com awk
etc, mas não consigo encontrá-lo. A melhor coisa seria uma função como {{epoch .CreatedAt}}
(semelhante a {{lower .Name}}
)