cat一个shell函数内的文件

时间:2011-03-24 00:49:23

标签: shell

我想知道如何实现以下内容:

test(){
  cat>file<<'EOF'
    abc
  EOF
}

非常感谢。

3 个答案:

答案 0 :(得分:9)

强:

删除EOF前面的空格(因此它本身就在一条线上而不是缩进)。

答案 1 :(得分:5)

来自bash(1)

If the redirection operator is <<-, then all leading tab
characters are stripped from input lines and the line
containing delimiter.  This allows here-documents within
shell scripts to be indented in a natural fashion.

它说tab,在我的测试中,tab有效,但空格没有:

#!/bin/bash

cat>file <<-END
    hello
    world
    hello
    END

echo done

(所有这些缩进都是制表符;关于代码的四个前导空格标记的有趣之处在于,在渲染文本中也只显示四个空格。)

答案 2 :(得分:1)

您的代码应该可以正常运行,您有什么具体要求吗?

#!/bin/sh

input() {
  cat > file <<EOF
input
line
another line
EOF
}

input

编辑:将function input更改为input()