在Shell脚本中创建具有某些内容的文件


20

我是Shell Scripting的新手,我想在脚本中创建一个新文件,然后添加内容然后关闭它。它不应从用户那里获取参数。路径和内容中的所有内容都是预定义的。我该怎么做?

Answers:


24

只需使用输出重定向。例如

#!/bin/bash

echo "some file content" > /path/to/outputfile

>会写入所有stdin提供通过stdoutecho该文件outputfile在这里。

或者,您也可以tee为此使用和管道。例如

echo "some file content" | tee outputfile

请注意,任何示例都将覆盖现有示例outputfile

如果需要附加到当前存在的文件,请使用>>代替>tee -a

如果您在此行中不接受用户输入,则任何用户输入都不能在此处更改行为。


对于希望在文件中包含换行器的人,请参见此处:stackoverflow.com/a/9741470/10512595
BelovedFool

18

我认为使用Here doc在脚本中创建新文件会更好。它看起来更干净,我相信这会提高可读性。

例如:

cat > filename <<- "EOF"
file contents
more contents
EOF

"-"<<-是可选的,允许标签缩进将被剥离在文件被创建时。左右的引号"EOF"可防止“ here doc”进行任何替换。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.