Ka *_* Rl 3 linux bash shell command-line
我有以下条件:
STATUSFILE = "foo.status"
NEWTIME=1389253927
if [ -f $STATUSFILE ] && [ expr $NEW_TIME - cat $STATUSFILE -gt 3600 ]; then
echo "foo"
fi;
Run Code Online (Sandbox Code Playgroud)
我得到了::太多的论点
参数if是一个unix命令.[相当于test.结果if取决于该命令的返回状态.
因此,如果要测试命令的返回状态,则应删除[.
如果要检查命令的输出(而不是其状态),则必须保留[并将命令放入$(和中).
您的陈述应改写为:
if [ -f $STATUSFILE ] && [ $(expr $NEWTIME - $(cat $STATUSFILE)) -gt 3600 ]; then
Run Code Online (Sandbox Code Playgroud)
更好的是使用bash的算术功能,由$((和提供)):
if [ -f $STATUSFILE ] && [ $(($NEWTIME - $(cat $STATUSFILE) )) -gt 3600 ]; then
Run Code Online (Sandbox Code Playgroud)