Como escrever um script de shell usando o argumento de linha de comando para converter horas em segundos [closed]

1

Tudo bem. Eu estou trabalhando em um script de shell, mas eu quero usar argumentos de linha de comando.

Por exemplo, se eu digitar o tempo 2 horas, a saída deve ser de 7200 segundos. Isto é o que eu tenho até agora, mas está usando a leitura em vez do argumento. Como posso reescrever isso como argumento de linha de comando?

seconds=0

echo -n "Enter number of seconds : "
read seconds

hours=$((seconds / 3600))
seconds=$((seconds % 3600))
minutes=$((seconds / 60))
seconds=$((seconds % 60))

echo "$hours hour(s) $minutes minute(s) $seconds second(s)"
    
por Anu Mathuria 01.05.2014 / 22:36

1 resposta

3

Basta substituir seconds por , o que corresponderá ao primeiro argumento passado ao script.

Se você quiser especificar as unidades da entrada, então você pode referenciar para isso. Observação: não posso testar as instruções if neste momento, a sintaxe pode estar desativada:

if [  == "minutes" ]; then
    seconds=$((*60))
elif [  == "hours" ]; then
    seconds=$((*3600))
else
    seconds=
fi
hours=$((seconds / 3600))
seconds=$((seconds % 3600))
minutes=$((seconds / 60))
echo "$hours hour(s) $minutes minute(s) $seconds second(s)"

Uso:

$ ./time.sh 7200
2 hour(s) 0 minute(s) 0 second(s)
$ ./time.sh 2 hours
2 hour(s) 0 minute(s) 0 second(s)
    
por Nattgew 01.05.2014 / 22:42