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 展开
#! /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 展开
2个回答
展开全部
有如下几种方法:
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要顶格写
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
展开全部
一般日志这种都应该是一行的,你把终端屏幕缩小,并且全屏,然后在看一下。
读取文件的每一行内容并输出
写法一:
#!/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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询