${1:-${variable_name}} 在 solaris 中是什么意思?
What does ${1:-${variable_name}} mean in solaris?
我有一个 solaris shell 脚本,其函数具有以下代码:
function get_prev_bday()
{
local _HOUR_CUTOFF=""
local _YYYYMMDD="`date '+%Y%m%d'`"
while [ ! -z "" ]; do
case 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}}
这是一种参数替换形式。这意味着取变量 </code> 的值,但如果未设置 <code>
,则使用值 ${_YYYYMMDD}
。因此,如果未设置 $1,则表达式 默认 为 ${_YYYYMMDD}
。
${parameter-default}, ${parameter:-default}
If parameter not set, use default.
我有一个 solaris shell 脚本,其函数具有以下代码:
function get_prev_bday()
{
local _HOUR_CUTOFF=""
local _YYYYMMDD="`date '+%Y%m%d'`"
while [ ! -z "" ]; do
case 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}}
这是一种参数替换形式。这意味着取变量 </code> 的值,但如果未设置 <code>
,则使用值 ${_YYYYMMDD}
。因此,如果未设置 $1,则表达式 默认 为 ${_YYYYMMDD}
。
${parameter-default}, ${parameter:-default}
If parameter not set, use default.