我多次写这个函数,但不能正确。看起来像一个小语法错误,但无法修复它。
function hadleDate{
date=`echo $1|cut -d"." -f1-3`
for element in $date; do
size=${#element}
if [[ $element == 0? ]]; then
echo -n $element|cut -c2-
elif [[ $size -eq 4 ]]; then
echo $element
else
echo -n $element
fi
done
}
mos="14.03.2013"
echo handleDate $mos
声明中的函数名称不能直接跟{
。应该有空格或括号。
function hadleDate () {
# ~~
handleDate 函数尝试在字段中剪切日期并将它们放在数组中。可变日期不是一个数组,而只是一个字符串。
你可以没有这样的数组:
function handleDate {
# Cut fields with dots and use $1 as input for the read.
IFS=. read mm dd yyyy <<< "${1}"
# Using printf can cut of the zeroes by converting the string to a number
printf "%d-%d-%sn" "${mm}" "${dd}" "${yyyy}"
}
mos="14.03.2013"
handleDate "${mos}"
您可能需要
访问 shellcheck.net 以了解语法错误。
你错过了,如果和"为"做"
function hadleDate {
date=`echo $1|cut -d"." -f1-3`
for element in $date; do
size=${#element}
if [[ $element == 0? ]]; then
echo -n $element|cut -c2-
elif [[ $size -eq 4 ]]; then
echo $element
fi
done
}
mos="14.03.2013"
echo handleDate $mos