【问题标题】:What does ${1:-${variable_name}} mean in solaris? [duplicate]${1:-${variable_name}} 在 solaris 中是什么意思? [复制]
【发布时间】:2020-01-01 14:41:57
【问题描述】:

我有一个带有以下代码的函数的 solaris shell 脚本:

    function get_prev_bday()
{
    local _HOUR_CUTOFF=""
    local _YYYYMMDD="`date '+%Y%m%d'`"

    while [ ! -z "$1" ]; do
        case $1 in
            -d | --day )  shift; _YYYYMMDD=${1:-${_YYYYMMDD}}
            ;;
            -h | --hour)  shift; _HOUR_CUTOFF=${1:-${_HOUR_CUTOFF}}
                                 _HOUR_CUTOFF="`echo $_HOUR_CUTOFF | sed -e 's/^0//'`"
            ;;
            *) echo -e "$FUNCNAME --\nUsage: get_prev_bday:
                    -d YYYYMMDD (optional, defaulted to today)
                    -h hour_cutoff (optional, used for current day late night run only)
                  "
               return 1
        esac
        shift
    done

上面的代码不完整,但我只对这部分感兴趣!所以我有这个函数 get_prev_bday 它将 -d (如果指定,这是可选的)作为我们想要查找上一个工作日的日期?在 $1 为 -d 的 while 循环情况下,它应该分配 -d 标记的 _YYYYMMDD 值。但是我无法弄清楚那里已经存在的代码在做什么?你们能帮我告诉我代码中的这个表达式是做什么的吗?

_YYYYMMDD={1:-${_YYYYMMDD}}

【问题讨论】:

  • 它看起来像是一个错字,它在第一个 { 前面缺少一个 $
  • @KamilCuk 是的。很抱歉那里的错字。修复。还是同一个问题。

标签: bash solaris


【解决方案1】:

这是一种参数替换形式。这意味着取变量$1 的值,但如果未设置$1,则使用值${_YYYYMMDD}。因此,如果未设置 $1,则表达式 默认${_YYYYMMDD}

${parameter-default}, ${parameter:-default}

If parameter not set, use default.

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 2020-04-11
    • 2013-03-10
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    相关资源
    最近更新 更多