如何在shell脚本中使用环境变量的值

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之中。

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

Shell脚本设置环境变量可以通过直接赋的方式来实现。环境变量通常用于设置程序运行时的配置信息,比如路径、语言、字符集等。以下是几种常见的设置环境变量的方法: 1. 直接在脚本: ```sh #!/bin/bash MY_VAR=value export MY_VAR ``` 在这段脚本,首先为变量`MY_VAR`赋为`value`,然后使用`export`命令将其导出为环境变量,这样在脚本内部和脚本启动的子进程都可以使用这个环境变量。 2. 使用`export`命令直接导出: ```sh #!/bin/bash export MY_VAR=value ``` 在这种方法,我们直接在赋的同时使用`export`命令,效果与第一种方法相同。 3. 使用`source`或`.`命令读取并设置环境变量: ```sh #!/bin/bash source /path/to/file_with_env_vars.sh ``` 或者 ```sh #!/bin/bash . /path/to/file_with_env_vars.sh ``` 当你有一个包含环境变量设置的文件时,可以使用`source`或`.`命令来执行该文件,从而设置环境变量。这种方式通常用于加载配置文件环境变量。 4. 使用`env`命令临时设置环境变量并执行命令: ```sh #!/bin/bash env MY_VAR=value command_to_run ``` 在这个例子,`env`命令用于临时设置环境变量`MY_VAR`,然后执行`command_to_run`命令。这种方式常用于临时改变环境变量并运行单个命令。 请记住,设置环境变量只对当前脚本及其子进程有效,不会影响父Shell环境或其他用户的环境。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翔在天上飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值