我在生产环境中运行一个脚本,其中分配了一个值,但我想使用与此处不同的值。
我的脚本.sh
a=20181214
....
我在之后调用这个脚本export a=20181212
,然后调用这个脚本,因为我想20181212
从这个脚本中使用。但每次它都会选择值作为20181214
。
答案1
如果您可以修改脚本,请修改它,使其显示
a=${a:-20181214}
这将使其使用先前设置的值a
,或者20181214
如果$a
为空或变量未设置。这是标准参数扩展。
然后你可以使用
export a=20181212
./script.sh
或者
a=20181212 ./script.sh
后者避免在调用环境中设置变量,而只为脚本环境设置它。
如果你不能修改脚本,那么a
无论您做什么,脚本总是会覆盖您的值。在这种情况下,请联系维护脚本的人员并说明情况。如果情况变得更糟,请使用您所使用的脚本的副本能修改,假设脚本不希望位于特定位置。
答案2
脚本将在另一个 shell 中执行。该命令export A
仅设置当前 shell 的变量。您可以在脚本顶部导出变量,它不会影响环境的其余部分。例如
~$ export A=a
~$ echo $A
a
如果您在同一个 shell 中创建脚本 test.sh
#!/bin/bash
export A=b
echo $A
输出将为“b”,但 shell 中 A 的值保持不变