日期上的 ksh 脚本语法错误
ksh script syntax error on date
我的 shell 脚本在此部分失败
dt=$(date +%Y%m%d)
syntax error at line 35: `dt=$' unexpected
这有点奇怪,因为我使用相同的方法来获取日期时间并且没有遇到任何问题
timestamp=$(date +%Y%m%d%H%M%S)
20170911105251
我也在 Notepad++ 中检查过,我没有下面@Frank 所建议的任何脏字符
下面是我的示例脚本。请注意,我省略了一些机密部分。基本上,脚本根据指定的 dt 将文件从服务器 A 传输到 B。如果执行时没有指定日期参数,则取当前日期。
if [ -z "" ]
then
dt=$(date +%Y%m%d)
else
dt=
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
注意,当您从任何地方复制文本并粘贴到文件中时(我想您已经这样做了),它可以添加 "dirty" 个字符。
如果您有像 notepad++ 这样的文本编辑器,请单击 :
它将显示所有字符。
通过 notepad++,您可以将文件格式从 windows 更改为 unix,方法是右键单击页面右下角:
保存文件并再次发送到您的计算机。
语法似乎是正确的,所以它应该可以工作。
无论如何我提到了记事本++,但你可以用其他文本编辑器来做。
dt=$(date +'%Y%m%d')
并且 不是 dt=$(dt +'%Y%m%d')
下面的工作示例:
!/usr/bin/bash
if [ -z ]
then
dt=$(date +'%Y%m%d')
else
dt=
fi
echo $dt
结果:
xxxxxxxxxxxxxx:/pathtosh> prova.sh
20170911
xxxxxxxxxxxxxx:/pathtosh> prova.sh 1
1
我的 shell 脚本在此部分失败
dt=$(date +%Y%m%d)
syntax error at line 35: `dt=$' unexpected
这有点奇怪,因为我使用相同的方法来获取日期时间并且没有遇到任何问题
timestamp=$(date +%Y%m%d%H%M%S)
20170911105251
我也在 Notepad++ 中检查过,我没有下面@Frank 所建议的任何脏字符
下面是我的示例脚本。请注意,我省略了一些机密部分。基本上,脚本根据指定的 dt 将文件从服务器 A 传输到 B。如果执行时没有指定日期参数,则取当前日期。
if [ -z "" ]
then
dt=$(date +%Y%m%d)
else
dt=
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
注意,当您从任何地方复制文本并粘贴到文件中时(我想您已经这样做了),它可以添加 "dirty" 个字符。 如果您有像 notepad++ 这样的文本编辑器,请单击 :
它将显示所有字符。
通过 notepad++,您可以将文件格式从 windows 更改为 unix,方法是右键单击页面右下角:
保存文件并再次发送到您的计算机。 语法似乎是正确的,所以它应该可以工作。
无论如何我提到了记事本++,但你可以用其他文本编辑器来做。
dt=$(date +'%Y%m%d')
并且 不是 dt=$(dt +'%Y%m%d')
下面的工作示例:
!/usr/bin/bash
if [ -z ]
then
dt=$(date +'%Y%m%d')
else
dt=
fi
echo $dt
结果:
xxxxxxxxxxxxxx:/pathtosh> prova.sh
20170911
xxxxxxxxxxxxxx:/pathtosh> prova.sh 1
1