【问题标题】:How to create shell variable with dashes?如何用破折号创建shell变量?
【发布时间】:2020-06-30 07:12:58
【问题描述】:

在 Linux 环境中,我想创建一个带有破折号的变量名。这是可能的,因为我可以在 jenkins 中设置一个类似的名称,env 给出输出(在其他行中):

variable-with-dashes=test

但是如何直接在 shell 上做到这一点呢?正在做

export variable-with-dashes=test

报错

-bash: export: `variable-with-dashes=test': not a valid identifier

在这两种情况下,shell 似乎都是/bin/bash

【问题讨论】:

    标签: linux shell jenkins


    【解决方案1】:

    我从来没有遇到过允许 - 在变量名中的 Bourne 风格的 shell。仅支持 ASCII 字母(任意一种)、_ 和数字,并且第一个字符不能是数字。

    如果您的程序需要不符合 shell 限制的环境变量,请使用 env 程序启动它。

    env 'strange-name=some value' 我的程序

    请注意,某些 shell(例如,现代 dash、mksh、zsh)会从环境中删除它们不喜欢名称的变量。 (Shellshock 导致人们对环境变量名称更加谨慎,因此限制可能会随着时间的推移变得更严格,而不是更宽松。)所以如果您需要将名称包含特殊字符的变量传递给程序,直接传递它,中间没有外壳(env 'strange-name=some value' sh -c'...; myprogram' 可能会也可能不会工作)。

    https://unix.stackexchange.com/questions/23659/can-shell-variable-name-include-a-hyphen-or-dash

    【讨论】:

    • 我不明白你的问题。通常,jenkings 只是用setenv 设置环境变量。
    • setenv C function。没有“setenv”命令。
    【解决方案2】:

    bash shell 中的name 定义为:

    仅由字母、数字和下划线组成并以字母或下划线开头的单词。名称用作 shell 变量和函数名称。

    名称中不能使用-

    但是如何直接在 shell 上做呢?

    我认为您可以编写一个 bash 内置函数,并在该内置函数中调用 setenv(3) 来设置您的环境变量。

    【讨论】:

      猜你喜欢
      • 2016-05-02
      • 1970-01-01
      • 2019-08-14
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多