Как написать сценарий оболочки с использованием аргумента командной строки для преобразования часов в секунды [закрыто]

Ладно. Я работаю над сценарием оболочки, но вместо этого хочу использовать аргументы командной строки.

Например, если я ввожу время 2 часа, на выходе должно быть 7200 секунд. Это то, что у меня есть до сих пор, но вместо аргумента используется чтение. Как я могу переписать это как аргумент командной строки?

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)"
1
задан 2 May 2014 в 00:42

1 ответ

Просто замена seconds с $1, который будет соответствовать первому аргументу, передала сценарию.

, Если Вы хотите определить единицы входа, тогда можно сослаться $2 для этого. Примечание: я не в состоянии протестировать эти if операторы прямо сейчас, синтаксис может быть прочь:

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

Использование:

$ ./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)
3
ответ дан 10 November 2019 в 19:24

Другие вопросы по тегам:

Похожие вопросы: