2017-03-04 121 views
1

我编写了将输入日期和时间的shell。验证用户在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作为这个脚本。

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

+3

我建议用'''替换所有反引号。 – Cyrus

+0

想知道它如何能够*如预期那样正常工作*即使没有'nohup'。解释:请参阅@赛勒斯的评论。 – jm666

+0

当我说它工作正常,因为它给了我错误消息,如果我给错误的输入,但事情是它没有发现目录发现错误,这是不好的显示在屏幕上或有人可能会采取错误的方式 – mradul

回答

1

当你使用反引号,像+%d-%b-%y,外壳正试图执行被称为+%d-%b-%y程序,然后将其作为参数传递给date。当然因为没有这样的程序而失败。