Escrevendo saída de comando para variável [closed]

0

Eu gostaria de colocar a saída de um comando em uma variável. Tanto quanto eu sei, você tem que usar um destes:

variable=$(command)
variable='command'

O seguinte deve funcionar do meu ponto de vista:

for i in $(ls -1); do
    modTime=$(/usr/gnu/bin/date -r $i +$F)
    echo $modTime
done

Eu também tentei backticks; nada muda. Se é importante, é um bash shell.

    
por geust1823812 06.07.2016 / 16:51

1 resposta

1

Primeiro, nunca analise a saída de ls . A saída é considerada legível e não foi projetada para análise. É muito melhor simplesmente dar uma volta pela globbing, como mostrarei abaixo.

O problema real foi que você usou $F em vez de %F . O primeiro teria sido uma variável vazia e, portanto, o comando date não teria nenhuma saída. Então, aqui está o comando modificado:

for i in ./*; do
    modTime="$(/usr/gnu/bin/date -r "$i" +%F)"
    echo "$modTime"
done

No entanto, um único comando find deve fazer o que você deseja:

find ./ -maxdepth 1 -printf "%TY-%Tm-%Td\n"
    
por 06.07.2016 / 17:06