小编gre*_*emo的帖子

单行 shell 赋值,但仅当变量未设置时(尊重 null 或空值)?

APP_ENV“prod”为DATABASE_DISABLE_MIGRATIONS空时;在任何其他情况下,它应该是true except DATABASE_DISABLE_MIGRATIONS为空或 null。换句话说,必须尊重它的值,并且只有在未设置它时才应进行自动分配。

原来的DATABASE_DISABLE_MIGRATIONS APP_ENV 新的DATABASE_DISABLE_MIGRATIONS
空或空 任何 保留原有价值
非零长度字符串 任何 保留原有价值
未设置 “产品” 空的
未设置 空或不是“prod” “真的”

我正在开始学习 shell (POSIX),并且我已经使用以下代码成功完成了此任务:

#!/bin/sh

if [ "${DATABASE_DISABLE_MIGRATIONS+set}" != set ]; then
    : ${DATABASE_DISABLE_MIGRATIONS:=$( [ "$APP_ENV" = "prod" ] || echo "true" )}
fi

# Just for debug (not meant to be in the single-line assignment of course)
if [ -z "$DATABASE_DISABLE_MIGRATIONS" ]; then
    echo "Empty value, migrations ENABLED"
else
    echo …
Run Code Online (Sandbox Code Playgroud)

shell posix

3
推荐指数
2
解决办法
735
查看次数

标签 统计

posix ×1

shell ×1