首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意外标记`date=`echo $1|cut -d".“-f1-3``附近出现语法错误

意外标记`date=`echo $1|cut -d".“-f1-3``附近出现语法错误
EN

Stack Overflow用户
提问于 2016-05-23 21:54:26
回答 3查看 398关注 0票数 0

我写了这个函数很多次,但不能像一个小的语法错误一样获得right..looks,但也不能修复它。

代码语言:javascript
复制
    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
EN

回答 3

Stack Overflow用户

发布于 2016-05-23 22:00:22

声明中的函数名不能直接跟在{后面。应该有空格或圆括号。

代码语言:javascript
复制
function hadleDate () {
#                  ~~
票数 4
EN

Stack Overflow用户

发布于 2016-05-23 22:03:15

您可能希望访问shellcheck.net以查找语法错误。

你错过了,if的fi和" for“的if。

代码语言:javascript
复制
 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
票数 0
EN

Stack Overflow用户

发布于 2016-05-23 23:48:16

您的handleDate函数尝试将字段中的日期剪切并将其放入数组中。您的变量date不是数组,而只是一个字符串。

您可以不使用这样的数组:

代码语言:javascript
复制
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-%s\n" "${mm}" "${dd}" "${yyyy}"
}

mos="14.03.2013"
handleDate "${mos}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37392936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档