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之中。
当然,我感觉还有更高级的办法可以解决这个问题,目前我还没想到