[英]incrementing an environmental variable
我需要通过以下步骤增加环境变量:
envar=1
export envar
sh script_incrementation
echo $envar
其中 script_incrementation 包含如下内容:
#! /bin/sh
envar=$[envar+1] #I've tried also other methods of incrementation
export envar
无论我做什么,在退出脚本后,变量仍保持其初始值 1。
谢谢你的时间。
你的脚本不能改变调用进程(shell)的环境,它只是继承它。
因此,如果您export foo=bar
,然后使用您的脚本调用sh
(一个新进程),脚本将看到$foo
的值(即"bar"
),并且它将能够更改自己的它 - 但这不会影响父进程的环境(您导出变量的地方)。
你可以简单地source
脚本在原来的外壳,即运行
source increment_script.sh
或者
. increment_script.sh
然后会改变变量的值。
这是因为source
脚本避免产生新的 shell(进程)。
另一个技巧是让您的脚本输出更改后的环境,然后评估该输出,例如:
counter=$[counter+1]
echo "counter=$counter"
然后运行它
eval `increment_script.sh`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.