在环境变量值中使用星号

在环境变量值中使用星号

我需要定义一个环境变量,其值为 cron 作业。该值如下:

"0 0 * * * *"

它将作为 Linux 上的 bash 命令执行。这可能吗?我该如何实现它?

答案1

是的,这是可能的。您不需要做任何特别的事情,只需遵循编程语言的常规语法即可。

例如,在 Bash 中你可以使用:

export myvar="0 0 * * *"

在 Python 中:

os.environ["myvar"] = "0 0 * * *"

或者如果值确实应该包含引号,如您的示例中所示:

export myvar="\"0 0 * * *\""

os.environ["myvar"] = "\"0 0 * * *\""

你可能在 sh/bash 中遇到这个问题,因为echo $myvar似乎输出了错误的值。但变量中存储的值可能完全没问题——问题在于你如何尝试输出价值。

在 sh/bash 中,变量扩展是作为单独的步骤完成的通配符扩展。如果变量名没有加引号,则原始命令echo $myvar将首先扩展为正确的值echo 0 0 0 * *- 然后然后单词拆分和全局扩展步骤已完成,将输出转换为文件名列表。

(是的,这也可能发生在分配时。然而,我更常见的是人们在输出时忘记这一点;用空格分配值可能会自然而然地让人想起引用。)

输出变量的正确方法是echo "$myvar"。(要检查变量的类型和原始内容,bash 有declare -p myvar。)

相关内容