验证用户在shell脚本中输入的日期时间格式

时间:2017-03-04 09:36:18

标签: linux bash shell unix sh

我写shell将输入日期和时间。

if date `+%d-%b-%y` -d $1 >> /dev/null 2>&1; then
  echo "Date Provided by user : $1"
else
  echo "Wrong date format please refer ReadMe for correct format"
  echo "You have eneterd : $1"
  exit 1
fi

if date `+%H:%M` -d $2 >> /dev/null 2>&1; then
  echo "Time Provided by user : $2"
else
  echo "Wrong Time format please refer ReadMe for correct format"
  echo "You have eneterd : $2"
  exit 1
fi

正如预期的那样正常工作,但问题是它在nohup.out

下面打印
./ntwk_resource_rollback.sh[31]: +%d-%b-%y: not found [No such file or directory]
Date Provided by user : 07-feb-17
./ntwk_resource_rollback.sh[39]: +%H:%M: not found [No such file or directory]
Time Provided by user : 03:36    

所以我想删除nohup.out中找不到目录的错误,因为客户端可以读取nohup.out以进行调试。

我可以将KSH或BASH用于此脚本。

请告知我在这里做错了什么!

1 个答案:

答案 0 :(得分:1)

当您使用反引号时,例如在+%d-%b-%y中,shell正在尝试执行名为+%d-%b-%y的程序,然后将其作为参数传递给date。当然它失败了,因为没有这样的程序。