代码之家  ›  专栏  ›  技术社区  ›  mtryingtocode

日期出现ksh脚本语法错误

  •  0
  • mtryingtocode  · 技术社区  · 7 年前

    dt=$(date +%Y%m%d)
    
    syntax error at line 35: `dt=$' unexpected
    

    这有点奇怪,因为我用它来获取日期时间,没有任何问题

    timestamp=$(date +%Y%m%d%H%M%S)
    
    20170911105251
    

    enter image description here

    下面是我的示例脚本。请注意,我省略了一些机密部分。基本上,脚本根据指定的dt将文件从服务器A传输到服务器B。如果在执行期间未指定日期参数,则采用当前日期。

    if [ -z "$1" ]
    then
        dt=$(date +%Y%m%d)
    else
        dt=$1
    fi
    
    export rundate
    
    timestamp=$(date +%Y%m%d%H%M%S)
    logfile=${log_path}/${batch}-${dt}-${timestamp}.log
    mail_file=${log_path}/${batch}-mail-${timestamp}.txt
    
    export mail_file
    
    filecount=$(wc -l ${batch_filelist} | cut -d " " -f 1)
    
    sftp ${dest} <<EOF >> $logfile
    cd $destdir
    lcd $sourcedir
    put -p *.txt
    exit
    EOF
    
    
    mail -s "SFTP Done (dt:$dt)" $(cat $email_accounts) < $mail_file
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Frank    7 年前

    如果您有notepad++之类的文本编辑器,请单击:

    enter image description here

    它将显示所有字符。

    通过notepad++,您可以通过右键单击页面右下角,将文件格式从windows更改为unix:

    enter image description here

    语法似乎正确,因此应该可以使用。

    无论如何,我提到了notepad++,但你可以用其他文本编辑器来实现。

    dt=$(date +'%Y%m%d') dt=$(dt +'%Y%m%d')

    下面是一个工作示例:

    !/usr/bin/bash
    if [ -z $1 ]
    then
        dt=$(date +'%Y%m%d')
    else
        dt=$1
    fi
    echo $dt
    

    结果:

    20170911

    1.