我试图编写一个bash脚本来通知过期的用户密码。与“never”进行字符串比较时,我遇到了一个问题。我该如何避免?
我引用了Shell script to send email before password expires并做了一些调整。然而,在字符串比较方面,我面临着这个问题。如果$userexp等于never,我打算跳过代码执行。但是,它没有发生,并继续执行代码的下一部分,我得到下面的错误
日期:无效日期“never”

#!/bin/bash
#

user=user
HOST=`uname -n`
  # convert current date to seconds
  currentdate=$(date +%s)

  # find expiration date of user
  userexp=$(chage -l $user | grep 'Password expires' | cut -d: -f2)

  if [[ ! -z $userexp ]]
  then
    # convert expiration date to seconds
    #passexp=$(date -d "$userexp" "+%s")

    if [ "$userexp" = "never" ]
    then
       echo "Password for $user in $HOST is set to never expire"
   else
    # convert expiration date to seconds
    passexp=$(date -d "$userexp" "+%s")

      # find the remaining days for expiry
      (( exp = $passexp - $currentdate ))

      # convert remaining days from sec to days
      (( expday =  $exp / 86400 ))

      if (($expday < 10 ))
      then
        echo "Password  for $user in $HOST will expire in $expday day/s"
          else
          echo "Password for $user in $HOST still have much time to expire"
          fi
     fi
   fi

为什么我的字符串比较没有按预期工作,我该如何修复它。

最佳答案

如果$userexp等于“从不”你的代码,即使不是你能做的最好的(没有冒犯:),也应该有效。它认为在你的例子中可能有一个前导空格,也就是说,永远不要在空白处。检查一下,如果是这样,在您的if条件下将"never"更改为" never"

关于linux - 如何修复密码到期脚本中的无效日期错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57558752/

10-16 06:32