Проблемы с получением Bash-скрипта для правильного деления числового значения

247
Stepman72

Приведенный ниже скрипт предназначен для того, чтобы дать мне счетчик рабочего времени до истечения срока действия пароля для тестового пользователя, который я затем помещу в команду, которая отправляет электронное письмо с пороговым значением, которое будет определено, и записывает в него оператор /var/log/messages. Проблема в том, что $iпеременная не может быть разделена на 86400 цифр. Это должно конвертировать секунды обратно в дни. Заранее спасибо за помощь.

#!/bin/bash  for i in { $(( ( $(date +%s --date "`chage -l testuser |  grep "Password expires" |  cut -d " " -f3,4,5`") \ ) - $(date +%s) )) } ; do [ expr $i \ 86400 ] done  exit 0 
-1
Часть цикла `do` не может работать, поскольку` [expr $ i \ 86400] `будет интерпретироваться как` test expr $ i \ 86400`, что приведет к ошибке * "слишком много аргументов" *. agc 6 лет назад 0

1 ответ на вопрос

-1
JakeGould

Математическая логика вашего кода для деления на 86400 такова:

[ expr $i \ 86400 ] 

То \есть обратная косая черта, а не символ деление, которое является прямой слэш ( /), так что просто изменить его, как это и вы должны быть хорошо:

[ expr $i / 86400 ] 

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