1、问题的由来

#此处展示的是脚本的一部分

if [ ${Update_mode} -eq 0 ] ; then

TF_update

else

UDS_update

fi

说明:Update_mode是一个环境变量,TF_update和UDS_update是两个函数。

起初,我不知道环境变量这样直接使用会出现错误,我认为,环境变量在脚本中我可以直接拿来使用,殊不知,这种认知是错误的。

然后,脚本运行起来就出现问题了。

sh: 0: unknown operand

这句话的含义就是我那边的if条件判断语句出错了,意思是未知操作数。我查阅了网上的资料,才认识到,环境变量不能像我这样直接拿来用,脚本他不知道我定义了什么

2、问题的解决

但是,应该怎么解决呢?

因为,shell这边判断条件语句出错后,脚本直接就不执行if这个分支下的任何东西了,直接转而执行else中的分支语句去了,显然,这样是不能满足我们的要求的。

我想了很久,也在网上查了很久,只想到一种“曲线救国”的办法,因为linux下使用fw_printenv读取、fw_setenv修改uboot环境变量

我直接在脚本中,用反引号执行一条查看这个环境变量的值的命令

if [ `fw_printenv -n update_mode` -eq 0 ] ; then

TF_update

else

UDS_update

fi

注意,`fw_printenv -n update_mode`这里是反引号

然后,我就往多了想,我其实也可以将这个值,读取出来,然后,保存下来

val=`fw_printenv -n update_mode`,这样,我的这个值就被保存在了val之中。

当然,我感觉还有更高级的办法可以解决这个问题,目前我还没想到

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: