![在 shell 脚本中永久设置变量名](https://linux22.com/image/147343/%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%B0%B8%E4%B9%85%E8%AE%BE%E7%BD%AE%E5%8F%98%E9%87%8F%E5%90%8D.png)
每次运行脚本时我都需要更改变量名称。假设我有一个变量
a="foo"
echo "Value is : $a"
它会打印
Value is foo
但在同一个脚本中我正在更改变量值
a="bar"
如果我再次运行脚本它应该打印
Value is bar
我们可以在unix中实现这一点吗?
答案1
该行$a="bar"
应该给您一条错误消息:
bash: foo=bar: command not found
要设置a
为字符串bar
,请使用a="bar"
.请注意,这$a
是价值变量a
,这$a="bar"
是无意义的。
如果您想在每次运行脚本时更改该值,您可以(至少)做两件事。
创建
a
一个环境变量。这意味着您a
在脚本之外设置export
:export a="bar"
然后像往常一样运行脚本(需要修改它以不
a
首先覆盖从环境继承的值)。你也可以使用a="bar" ./myscript.sh
仅为脚本设置变量(即,不使其成为调用 shell 中的变量)。
使脚本从命令行获取值,以便您像这样调用脚本
./myscript.sh "bar"
然后脚本会做
a="$1"
a
从命令行参数设置值。这里,$1
意思是“第一个命令行参数”。
无论您采用哪种方式执行此操作,您可能还需要检查该值"$a"
是否为理智的(即包含有效数据)在使用之前。