Tomato路由器无法创建=:只读文件系统

时间:2014-03-21 13:43:24

标签: bash time readonly router

您好我正在尝试在Tomato路由器中设置一个脚本,当它运行时,它将回显一个取决于小时的值。脚本如下:

HOUR=$(date +"%k")

if [[ $HOUR >= 0 ] && [ $HOUR < 12 ]];then
    echo 'Morning'
else
    echo 'Evening'
fi

然而,当我执行脚本时,返回以下内容:

/tmp/.wxNL0Yv3: line 11: can't create =: Read-only file system 
Evening 

如何解决?我很确定我没有要求访问任何只读文件

2 个答案:

答案 0 :(得分:2)

如果我们假设你的shell不是真正的bash,我们会改变它:

hour=$(date +"%k")
if [ "$hour" -ge 0 ] && [ "$hour" -lt 12 ]; then
    echo 'Morning'
else
    echo 'Evening'
fi

如果你的shell真的 bash,那么chepner的回答更合适。

答案 1 :(得分:1)

您的if声明的条件应为

if [[ $HOUR -ge 0 && $HOUR -lt 12 ]]; then

双括号不是嵌套括号,而是条件命令的语法。此外,对于数字比较,您需要使用-ge-lt而不是字符串运算符<和(不存在的)>=

顺便说一下,

>=被解释为尝试将命令的输出重定向到文件=,并且您处于只读文件系统,因此无法创建新文件。在参数扩展之前处理重定向,因此shell还不知道$HOUR不会扩展为命令名。

对于更自然的表达式,您可以使用算术命令((...))

if (( $HOUR >= 0 && $HOUR < 12 )); then

在算术命令中,变量的美元符号是可选的,但我喜欢使用它,因为它允许bash为未定义的变量抛出错误,而不是将它们视为设置为0。