我有一些字符串$o1
,$o2
我想将它们制成表格。
我在这里看到一篇帖子说要这样做,但是它不起作用(Syntax error: end of file unexpected (expecting "}")
)。
{
cat <<EndOfOutput
$o1
$o2
EndOfOutput
} | column
这可能吗?
答案1
是的,如果你确实按照你的帖子中说的去做的话。
你必须记住 heredoc 终止符不能缩进除非使用 heredoc 开始<<-EndOfOutput
(破折号表示所有前导制表符 - 不是任何空格,而只是制表符 - 应该被删除)。
作品 | 也有效 | 失败 | 仅适用于标签页 |
---|---|---|---|
{ |
{ |
{ |
{ |
因此,您发布的没有任何缩进的版本实际上在所有 shell 上都能完美运行;但当您缩进它以使其看起来美观时,您就会收到错误。
当然,你可以不用括号(heredoc 可以在一行的中间打开)或者根本不用管道来省去一些麻烦:
作品 | 作品 | 作品 |
---|---|---|
cat <<结束|列 |
列 <<EndOfOutput |
<<EndOfOutput 列 |
(Heredocs 是 shell 语法特性,因此不需要cat
特别指定。)
答案2
这有效。
column -t <<EOF
$o1
$o2
EOF