Bash ${1:-${variable_name}}在solaris中是什么意思?

Bash ${1:-${variable_name}}在solaris中是什么意思?,bash,solaris,Bash,Solaris,我有一个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}} ;

我有一个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(如果指定,这是可选的)作为我们想要查找上一个工作日的日期?在while循环中,当$1为-d时,它应该为-d标记分配_YYYYMMDD值。但我无法弄清楚已经存在的代码在那里做什么?你们能告诉我这个表达式在代码中的作用吗

_YYYYMMDD={1:-${_YYYYMMDD}}

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

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

If parameter not set, use default.

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

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

If parameter not set, use default.

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