私は任意のユーザパスワードの有効期限を見つけるためのスクリプトを持っています。スクリプトは期限(秒)を検出できますが、これをdatetime形式に変換することはできません。kshエポックから日時書式
#!/usr/bin/ksh
if ((${#} < 1)) ; then
print "No Arguments"
exit
fi
lastupdate=`pwdadm -q $1|awk '{print $3;}'`
((lastupdate=$lastupdate+0))
maxagestr=`lsuser -a maxage $1`
maxage=${maxagestr#*=}
let maxageseconds=$maxage*604800
expdateseconds=$(expr "$maxageseconds" + "$lastupdate")
((expdateseconds=$expdateseconds+0))
expdate=`perl -le 'print scalar(localtime($expdateseconds))'`
echo $expdateseconds
echo $expdate
このスクリプトでは、expdatesecondsの値はtrueです。 localtime()関数のパラメータとしてexpdatesecondsの値を入力すると、この関数は日付を日時形式で表示します。
しかし、$ expdateseconds変数を入力すると、関数は正しく機能せず、常に01.01.1970を返します。
localtime()関数のパラメータとして変数を入力するにはどうすればよいですか?
あなたの 'perl'スクリプトの代わりにdbl-quotesを使用しますか?また、 'date'コマンドが提供するオプションを見てみると、ロードする小さなプログラムです(' man date')。がんばろう。 – shellter