methods() {
cat <<-!
start
stop
restart
reload
status
methods
!
}
这是正确的,我得到错误为什么我的文档(<< - )给我一个语法错误?
syntax error: unexpected end of file
methods() {
cat <<-!
start
stop
restart
reload
status
methods
!
}
这是正确的,我得到错误为什么我的文档(<< - )给我一个语法错误?
syntax error: unexpected end of file
对于古贝壳这里,文档,你有相匹配的标签究竟。这意味着:
methods() {
cat <<!
start
stop
restart
reload
status
methods
!
}
是,在该行的开始,但你可以做这样cat <<'^I!'
棘手的事情,标志设置一个独立的分页,然后!
。
现在bash
(以及可能更早的shell)修复了<<-
变种,它在处理之前剥离数据行和结束标记中的所有前导制表符。这样的话,你仍然可以很好地缩进:
methods() {
cat <<-!
start
stop
restart
reload
status
methods
!
}
但是,需要注意的条件:它去除标签,一般没有空格。如果在!
字符之前的任何地方有空格(或任何非制表符,可打印或其他),它将不起作用。
如果您使用vi
,就可以进入:set list
看到非打印字符会好一点,否则xd
或od -xcb
可以给你文件的十六进制转储。
感谢它的工作 –
早期的贝壳意味着'真正古老'。第七版Unix(1979)不支持它,但我相信System III(以及我几乎可以肯定的是System V)支持'带有短划线的'here doc'符号。 –
谢谢你,@乔纳森,指出我的前进的几年:-) – paxdiablo
给封闭选民:真的吗?你认为'bash'不是_programming?_你确实看到那里有一个函数被定义在那里,不是吗? – paxdiablo