2017-03-04 5 views
1

日付と時刻を入力するシェルを作成します。シェルスクリプトでユーザーが入力した日付の時刻形式を確認します。

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から見つかりませんディレクトリの示すエラーを削除したい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を読み取ることができます。

このスクリプトにはKSHまたはBASHを使用できます。

私はここで何をしているのかアドバイスしてください!

+3

すべてのバッククォートを ''で置き換えることをお勧めします。 – Cyrus

+0

"nohup"がなくても*期待どおりにうまくいくかどうか疑問に思っています。 Explantion:@ Cyrusのコメントを参照してください。 – jm666

+0

間違った入力をしてもエラーメッセージが表示されるのでうまくいきますが、画面上に表示されないディレクトリが見つからないか、誰かが間違った方法でそれを取る可能性があります – mradul

答えて

1

+%d-%b-%yのようにバックティックを使用すると、シェルは+%d-%b-%yというプログラムを実行しようとしており、それをdateの引数として渡します。もちろん、そのようなプログラムがないので失敗します。

関連する問題