我正在寻找一种方法,仅当环境变量之前未设置为任何值(甚至是空字符串)时,才将 Bash 脚本中导出的环境变量设置为脚本中字面指定的默认值,并执行此操作无需在解决此任务的代码中多次提及环境变量的名称。
\n\n请注意,此处和此处的解决方案(使用${FOO:=42})不适用,因为它们仅设置 shell 变量,而不是导出的环境变量。我不想为单个命令设置它;我想为来自同一 shell 的所有命令设置它。
另请注意,类似
\n\nexport FOO="${FOO:-42}"\nRun Code Online (Sandbox Code Playgroud)\n\n也没有回答这个问题,因为它FOO在解决方案中提到了两次。
我意识到这个问题有一个简单的技术替代解决方案 \xe2\x80\x94 只需使用两次提到变量名称的解决方案。明确地说,“不,这是不可能的”是对这个问题的合理答案,如果它确实不可能,并且如果两次提及该变量不是问题,那么这些替代方案是完全可以的,所以它\这是一个稍微人为的问题(我只关心这个以使编辑脚本稍微更加干净和容易)。
\n-a当您给变量赋值时,shell 选项会自动导出该变量。
set -a
: ${FOO:=42}
: ${BAR:=baz}
set +a
Run Code Online (Sandbox Code Playgroud)
您确实需要注意,如此测试的变量都不是在块之前创建的。如果BAR有值但尚未导出,则仅扩展不足以设置 的BAR导出属性;必须创建或修改它。
| 归档时间: |
|
| 查看次数: |
2909 次 |
| 最近记录: |