使用shell脚本创建包含一些内容的文件

时间:2011-02-02 19:40:19

标签: shell unix scripting

我需要配置一个文件很少的服务器,我想以编程方式进行。

我需要创建文件说/home/a.config,/var/spool/b.config,/etc/c.config

上面的文件有一些内容(多行)。

我想创建一个shell脚本,它可以创建具有多行(大约10个)的所有三个文件。 我想知道我如何使用CAT命令来做到这一点。 (在shell脚本中)。

我正在寻找像这样的人

echo " going to create  /home/a.config"

cat "HOW CAN I HAVE MULTIPLE LINES HERE?? " >  /home/a.config 

感谢

5 个答案:

答案 0 :(得分:71)

您可以使用此处的文档:

cat <<EOF >/home/a.config
first line
second line
third line
EOF

您可以在同一个脚本中放置其中的几个。

答案 1 :(得分:8)

文件=&#34; /tmp/test.txt"
echo&#34;添加第一行&#34; &GT; $文件
echo&#34;添加第一行替换&#34; &GT; $文件
echo&#34;追加第二行&#34; &GT;&GT; $文件
echo&#34;追加第三行&#34; &GT;&GT; $文件
cat $ file

&gt; 添加/替换内容(此处实际内容被第二行替换)
&gt;&gt; 附加

结果
添加第一行替换
附加第二行
附加第三行

答案 2 :(得分:6)

像这样:

#!/bin/bash

var="your text"
echo "simply put,
just so: $var" > a.config

有关详细信息,请参阅abs的输入/输出部分 希望,这有帮助。

答案 3 :(得分:1)

>\#!/bin/bash
>
>var="your text" <br>
>echo "simply put, <br>
>just so: $var" > a.config

请注意,你还需要逃避某些字符以避免它们干扰你正在尝试做的事情,例如$`和“将会破坏这样的语句,除非前面加上反斜杠,即\`\ $或\“

所以,如果我们定义以下内容:

  

VAR = “100”

以下行为不符合预期:     

  回声“简单地说,左   只是“借给我”US $ $ var“&gt; a.config

但以下内容可以正常运行:

  回声“简单地说,左   只是“借给我”US \ $ $ var“&gt; a.config

答案 4 :(得分:1)

如果您的文本中有$ 1或$ HOMEDIR等变量,则通常会对这些变量进行求值并用实际值替换。如果你想阻止它们被替换,那么你需要引用开头限制字符串(下面的例子中的EOF),引用单引号'EOF',双引号"EOF"或者在它前面加上反斜杠\EOF

关闭限制字符串保持不变。 EOF

如果要将shell脚本编写到文件中,这将非常有用。

cat << 'EOF' >/etc/rc.d/init.d/startup
case $1 in
    start)
        start 
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
       pid=$(tomcat_pid)
        if [ -n "$pid" ]
        then
           echo "Tomcat is running with pid: $pid"
        else
           echo "Tomcat is not running"
        fi
        ;;
esac

EOF

参考例19.7参数替换在Here Documents

中关闭