Bri*_*nge 3 ksh shell-script whitespace here-document
我的 shell 脚本中有以下代码片段,并且有一个错误,尽管进行了一些研究,但我似乎无法确定原因。当我运行如下代码时,脚本退出并显示一条消息
./my_script.sh: line 53: syntax error at line 61: `<<' unmatched
Run Code Online (Sandbox Code Playgroud)
我已经使用过set -x
并且可以看到在出现错误之前一切都很好(无论如何我只设置了变量)。出于某种原因,只需从eot
允许它工作之前删除空格(它们是空格而不是非显示字符)。它让我的 xml 看起来有点不对齐但功能正常。有谁知道为什么会发生这种情况,因为我不喜欢这样的事情,我无法解释,我希望我的 xml 看起来也很漂亮。
这是脚本的相关部分:
# ... various environment variables set here ...
clean_files() # line 53
{
# Clear up the intermediate files
mv $datafile $ARCHIVE_DIR/$(basename $datafile).$$
}
xmlfile_header()
{ # line 60
cat <<- eot
<?xml version="1.0" encoding="UTF-8" ?>
<ppllist>
eot
}
# ... more stuff ...
Run Code Online (Sandbox Code Playgroud)
请注意,<<- word
here-doc 表单要求在 之前只能出现制表符word
。不能使用空格,必须是制表符。
参考:http : //www2.research.att.com/sw/download/man/man1/ksh.html#Input/Output