cat重定向结束符求解

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
vinoca
帖子: 59
注册时间: 2011-03-21 18:30

cat重定向结束符求解

#1

帖子 vinoca » 2011-09-09 20:47

cat <<EOF
....
....
EOF

怎么把那个EOF换成回车,也就是一行只输入回车的话结束定向。
achen.han
帖子: 442
注册时间: 2010-09-08 23:33

Re: cat重定向结束符求解

#2

帖子 achen.han » 2011-09-09 20:50

这样不是挺好吗? 用回车的话要是你的脚本中刚好有一个空行的化,结果就不是你期望的了。
头像
vinoca
帖子: 59
注册时间: 2011-03-21 18:30

Re: cat重定向结束符求解

#3

帖子 vinoca » 2011-09-09 21:00

是这样的,我在arch论坛里找到一个叫memoir的记事python脚本,很好,其实用shell更简单:

alias m='echo "--------------------">>~/.memoir;date >>~/.memoir;cat >>~/.memoir <<.'
唯一搞不定的就是结束符,将就着用.了,不知有没有好办法?
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

Re: cat重定向结束符求解

#4

帖子 sk1418 » 2011-09-09 21:12

vinoca 写了:是这样的,我在arch论坛里找到一个叫memoir的记事python脚本,很好,其实用shell更简单:

alias m='echo "--------------------">>~/.memoir;date >>~/.memoir;cat >>~/.memoir <<.'
唯一搞不定的就是结束符,将就着用.了,不知有没有好办法?
这样行么?

代码: 全选

alias m='echo "--------------------">>~/.memoir;date >>~/.memoir;cat >>~/.memoir'
输入的时候ctrl-D 结束编辑,没有终止符。
---
regards,

Kent
头像
vinoca
帖子: 59
注册时间: 2011-03-21 18:30

Re: cat重定向结束符求解

#5

帖子 vinoca » 2011-09-09 21:28

回复 sk1418
用回车主要是高仿memoir,因为这样确实方便。用了".",仿ed的, :em05
有没有好办法呢?这个问题其实困惑好久了。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: cat重定向结束符求解

#6

帖子 lilydjwg » 2011-09-09 23:58

zsh 下有效:

代码: 全选

>>> cat <<<ABC
ABC
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: cat重定向结束符求解

#7

帖子 我就是我2 » 2011-09-10 0:29

lilydjwg 写了:zsh 下有效:

代码: 全选

>>> cat <<<ABC
ABC
在bash也是可行的。

代码: 全选

cat <<< foobar
foobar可以是变量/文字/文件名
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: cat重定向结束符求解

#8

帖子 fnan » 2011-09-10 0:38

bash可以不用cat:
alias m='echo "--------------------">>~/.memoir;date >>~/.memoir;while read a;do [ $a ] && echo $a >>~/.memoir || break;done'
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
vinoca
帖子: 59
注册时间: 2011-03-21 18:30

Re: cat重定向结束符求解

#9

帖子 vinoca » 2011-09-10 9:14

fnan 写了:bash可以不用cat:
alias m='echo "--------------------">>~/.memoir;date >>~/.memoir;while read a;do [ $a ] && echo $a >>~/.memoir || break;done'
Perfect!
memoir那个python脚本也是用循环实现的,思路从一开始就回避了循环,循环总给人感觉耗费资源似的,从这个实例上看,它和cat <<<char 的效率是一样的。非常感谢,就用这个了。
上次由 vinoca 在 2011-09-10 9:17,总共编辑 1 次。
头像
vinoca
帖子: 59
注册时间: 2011-03-21 18:30

Re: cat重定向结束符求解

#10

帖子 vinoca » 2011-09-10 9:16

我就是我2 写了:
lilydjwg 写了:zsh 下有效:

代码: 全选

>>> cat <<<ABC
ABC
在bash也是可行的。

代码: 全选

cat <<< foobar
foobar可以是变量/文字/文件名
嗯,经测试,用<<<看来是难以实现的。就用fnan的那个了。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: cat重定向结束符求解

#11

帖子 fnan » 2011-09-10 20:11

把递归当循环用很耗资源,真正的循环不会。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
回复