shell 如何把多行内容输出到一个文件

想编写一个a.sh,负责将下面内容输出到/tmp/b,除了一行一行echo重定向,有什么一次性的方法?#!/bin/bash##start/stop##descripti... 想编写一个a.sh,负责将下面内容输出到/tmp/b ,除了一行一行echo重定向,有什么一次性的方法?

#! /bin/bash
#
# start/stop
#
# description: Use this to start or stop
#
#
start()
{
echo "start"
}
stop()
{
echo "stop"
}
case "$1" in
start)
start
alert "start"
;;
stop)
stop
"stop"
;;
*)
echo $"Usage: $0 {start|stop}"
esac
exit 0
展开
 我来答
百度网友5311d79
推荐于2017-11-26 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3215万
展开全部
有如下几种方法:
1)一行行地echo重定向
2)echo -e + 多行,重定向
3)用Here Document方式(具体参见:http://linux.die.net/abs-guide/here-docs.html
(
cat <<EOF
#! /bin/bash

# ......
所有内容
EOF
) >/tmp/b
4)先用文本编辑器vi或vim写入另一个文件 tmpfile,直接在a.sh里读文件重定向 cat tmpfile >/tmp/b
5)弃用a.sh,直接用vi或vim写入/tmp/b

我估计你想要第三种?
注意后面一个EOF要顶格写
追问
必须在知执行a.sh的前提下,采用2) 和 3) 能否举个例子?
追答

推荐你用第三种:

#!/bin/sh
(
cat <<EOF
start()
{
    echo "start"
}
EOF
) >/tmp/b

  

方法二太麻烦,遇到双引号还要转义:

#!/bin/sh
echo -e "start()\n{\n  echo \"start\"\n}" >/tmp/b
淺於生
2018-03-31 · TA获得超过5141个赞
知道小有建树答主
回答量:50
采纳率:14%
帮助的人:7607
展开全部

一般日志这种都应该是一行的,你把终端屏幕缩小,并且全屏,然后在看一下。

读取文件的每一行内容并输出
写法一:

#!/bin/bash

while read line
do
echo $line
done < file(待读取的文件)

写法二:

#!/binbash

cat file(待读取的文件) | while read line

do
echo $line
done

写法三:

for line in `cat file(待读取的文件)`
do
echo $line
done

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式