Bash 스크립트가 숫자 값을 올바르게 나누는 데 문제가 있습니다.


-1

아래 스크립트는 테스트 사용자의 암호가 만료 될 때까지 실행 카운트 다운을 제공하기 위해 결정된 임계 값에 전자 메일을 보내고 명령에을 작성하는 명령에 배치합니다 /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

do부터 루프의 일부는 가능성이 작동하지 않을 수있는 [ expr $i \ 86400 ]것으로 해석 될 수 test expr $i \ 86400반환하는 "너무 많은 인수" 오류가 발생했습니다.
agc

답변:


-1

86400으로 나누는 코드의 수학 논리는 다음과 같습니다.

[ expr $i \ 86400 ]

\A는 백 슬래시 가 아닌 것입니다 나누기 기호 슬래시 ( /) 그래서 그냥 이런 식으로 변경하고 당신이 잘되어야합니다 :

[ expr $i / 86400 ]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.