如何在Linux

时间:2016-02-22 13:33:23

标签: linux shell unix

我正在编写一个shell脚本,将天数转换为秒数。

我正在努力在变量和变量中首先获取值。

以下是我正在运行的脚本,但它对我不起作用。

DAYS=4
SECONDSPERDAY=86400
SECONDS=$(expr $DAYS/86400)
echo=$SECONDS

1 个答案:

答案 0 :(得分:4)

例如,您的脚本在Bash或Zsh中运行正常,但$()与旧版shell不兼容。也许你有不同的外壳?

另外,echo=blah可能不是你想要的,显然你的公式错了。

试试这个:

DAYS=4
SECONDSPERDAY=86400
seconds=`expr $DAYS '*' $SECONDSPERDAY`
echo $seconds

如果使用旧的非POSIX兼容shell,那么更好的方法可能是这样的:

DAYS=4
SECONDSPERDAY=86400
seconds=$(( DAYS * SECONDSPERDAY ))
echo $seconds

编辑...

警告:$SECONDS在Bash中有特殊含义!

随着时间的推移,$SECONDS的值会自动增加。您可以通过分配值来重置它,但不会将其设置为该值。上面的脚本可以正常工作,可能是,因为它会很快执行,但任何后续使用的值都可能会得到不同的值。我编辑了我的答案,使用$seconds来避免冲突。