在 shell 脚本中永久设置变量名

在 shell 脚本中永久设置变量名

每次运行脚本时我都需要更改变量名称。假设我有一个变量

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"是无意义的。

如果您想在每次运行脚本时更改该值,您可以(至少)做两件事。

  1. 创建a一个环境变量。这意味着您a在脚本之外设置export

    export a="bar"
    

    然后像往常一样运行脚本(需要修改它以不a首先覆盖从环境继承的值)。你也可以使用

    a="bar" ./myscript.sh
    

    仅为脚本设置变量(即,不使其成为调用 shell 中的变量)。

  2. 使脚本从命令行获取值,以便您像这样调用脚本

    ./myscript.sh "bar"
    

    然后脚本会做

    a="$1"
    

    a从命令行参数设置值。这里,$1意思是“第一个命令行参数”。

无论您采用哪种方式执行此操作,您可能还需要检查该值"$a"是否为理智的(即包含有效数据)在使用之前。

相关内容