Joe*_*jr2 0 command-line shell environment-variables
我想知道是否从命令行设置了特定的环境变量。我需要区分它被设置为一个空白字符串(或只是空格)和根本没有设置,所以我想得到一个明确的真/假或是/否,如果没有设置,不只是不打印任何内容。
我知道在脚本中,我可以使用-z
,但我不确定是否/如何直接从命令行执行此操作。
我试过这个:
$ echo -z "${MY_URDSFDFS}"
Run Code Online (Sandbox Code Playgroud)
但它只是打印:
-z
Run Code Online (Sandbox Code Playgroud)
使用参数扩展的形式。如果未设置且已设置,则为空,即使它是空的。(而如果未设置或为空,则为空,并且如果设置为非空值。)${VAR+TEXT}
${VAR+1}
VAR
1
VAR
${VAR:+1}
VAR
1
VAR
if [ -n "${MY_URDSFDFS+1}" ]; then
echo "\$MY_URDSFDFS is set"
else
echo "\$MY_URDSFDFS is not set"
fi
Run Code Online (Sandbox Code Playgroud)
这适用于任何 POSIX 或 Bourne shell,即所有现代甚至最古老的 sh 方言。
这不区分环境变量和 shell 变量。如果您必须拒绝非导出的 shell 变量,您可以在单独的进程中进行测试:sh -c 'test -n "${MY_URDSFDFS+1}"'
. 不过,这很少是一个问题。
请注意,这通常是一个坏主意,因为有时取消设置变量不方便,有时将其设置为空字符串不方便。通常,应将空环境变量与未设置的环境变量相同地对待。
归档时间: |
|
查看次数: |
322 次 |
最近记录: |