这行代码有什么问题?

时间:2014-03-19 13:28:19

标签: bash scripting echo graphviz

我有这个代码,我似乎无法运行:

 echo "digraph G{"; cat "$file"; echo "}" | dot -T png > graph.png

终端回应所有它应该被卡在}符号上。我猜在语法上有些不对劲。

 Warning: <stdin>: syntax error in line 1 near '}'
你能快速帮忙吗?

2 个答案:

答案 0 :(得分:4)

据推测,您打算将各种语句的所有输出发送到dot,如下所示:

{
  echo "digraph CG{"
  cat "$tmp"
  echo "}"
} | dot -T png > callgraph.png

答案 1 :(得分:3)

使用bash,你可以折叠echo; cat; echo

echo "digraph CG{$(< "$tmp")}" | dot ...

或者,如果您喜欢额外的换行符

printf 'digraph CG{\n%s\n}\n' "$(< "$tmp")" | dot ...