【发布时间】: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 是的。很抱歉那里的错字。修复。还是同一个问题。