shel 问题...如何打印变量?

1 view
Skip to first unread message

vivian huang

unread,
Mar 9, 2010, 3:30:09 AM3/9/10
to SHLUG
1. 如何打印一个含有多个换行的变量?如果用echo $var, var中的换行会被去掉
2. 如何用grep 搜索一个变量var? 例如这个能传达我的意思的却不能按我想传达的意思的方式工作的: grep "pattern" $var


Lightning

unread,
Mar 9, 2010, 3:37:26 AM3/9/10
to sh...@googlegroups.com
1 shell里有printf() 函数,你可以试试。
2 试试用 xargs 命令来解决。

vivian huang 写道:

vivian huang

unread,
Mar 9, 2010, 3:50:36 AM3/9/10
to sh...@googlegroups.com
我试过printf "%s\n" $var 不行,有没其他建议?

2010/3/9 Lightning <ligh...@shlug.org>

Lightning

unread,
Mar 9, 2010, 4:02:22 AM3/9/10
to sh...@googlegroups.com
我试了一下,没问题啊,printf输出时能够分行。

vivian huang 写道:
> 我试过printf "%s\n" $var 不行,有没其他建议?
>
> 2010/3/9 Lightning <ligh...@shlug.org <mailto:ligh...@shlug.org>>

Chaos Eternal

unread,
Mar 9, 2010, 4:05:10 AM3/9/10
to sh...@googlegroups.com
1. 不解,你要的效果是什么? 把换行替换成空格么? 若如是: echo "$var"|tr \\n ' '
2. echo "$var" |grep pattern

2010/3/9 vivian huang <vivia...@gmail.com>:

vivian huang

unread,
Mar 9, 2010, 4:07:11 AM3/9/10
to sh...@googlegroups.com


2010/3/9 Lightning <ligh...@shlug.org>
我试了一下,没问题啊,printf输出时能够分行。


printf 把空格都替换成\n了
van-hr@van-hr-desktop:~/tst/shell-script$ echo $var
a b c
van-hr@van-hr-desktop:~/tst/shell-script$ printf "%s\n" $var
a
b
c
van-hr@van-hr-desktop:~/tst/shell-script$
 

Chaos Eternal

unread,
Mar 9, 2010, 4:09:40 AM3/9/10
to sh...@googlegroups.com
美女,那你到底想要啥效果?

2010/3/9 vivian huang <vivia...@gmail.com>:

vivian huang

unread,
Mar 9, 2010, 4:10:47 AM3/9/10
to sh...@googlegroups.com


2010/3/9 Chaos Eternal <chaose...@shlug.org>

1. 不解,你要的效果是什么? 把换行替换成空格么? 若如是: echo "$var"|tr \\n ' '

我意思是要”原汁原味“地输出。。。echo $var 就是把换行换成空格了,我是问怎么能不换成空格。。。
 
2. echo "$var" |grep pattern

这样换行都没了
 

Lightning

unread,
Mar 9, 2010, 4:11:13 AM3/9/10
to sh...@googlegroups.com
你的问题是 “如何打印一个含有多个换行的变量?” ?

vivian huang 写道:
>
>
> 2010/3/9 Lightning <ligh...@shlug.org <mailto:ligh...@shlug.org>>
>
> 我试了一下,没问题啊,printf输出时能够分行。
>
>
> printf 把空格都替换成\n了
> van-hr@van-hr-desktop:~/tst/shell-script$ echo $var
> a b c
> van-hr@van-hr-desktop:~/tst/shell-script$ printf "%s\n" $var
> a
> b
> c
> van-hr@van-hr-desktop:~/tst/shell-script$
>
> vivian huang 写道:
> > 我试过printf "%s\n" $var 不行,有没其他建议?
> >
> > 2010/3/9 Lightning <ligh...@shlug.org
> <mailto:ligh...@shlug.org> <mailto:ligh...@shlug.org

Lightning

unread,
Mar 9, 2010, 4:13:40 AM3/9/10
to sh...@googlegroups.com
我前面说的printf就可以满足你的要求了。

vivian huang 写道:
>
>
> 2010/3/9 Chaos Eternal <chaose...@shlug.org
> <mailto:chaose...@shlug.org>>
>
> 1. 不解,你要的效果是什么? 把换行替换成空格么? 若如是: echo
> "$var"|tr \\n ' '
>
>
> 我意思是要”原汁原味“地输出。。。echo $var 就是把换行换成空格了,我是问
> 怎么能不换成空格。。。
>
> 2. echo "$var" |grep pattern
>
> 这样换行都没了
>
> 2010/3/9 vivian huang <vivia...@gmail.com
> <mailto:vivia...@gmail.com>>:

vivian huang

unread,
Mar 9, 2010, 4:13:46 AM3/9/10
to sh...@googlegroups.com
比如file 的内容是:
line1
line21 line22
line3

我要的效果是:
var=$(cat file) 之后,打印var的输出和 `cat file' 的输出一模一样

2010/3/9 Chaos Eternal <chaose...@shlug.org>

vivian huang

unread,
Mar 9, 2010, 4:15:09 AM3/9/10
to sh...@googlegroups.com
严格地说,的确。。。一开始没描述清楚

2010/3/9 Lightning <ligh...@shlug.org>

Chaos Eternal

unread,
Mar 9, 2010, 4:15:43 AM3/9/10
to sh...@googlegroups.com
引号,注意引号!

echo "$var"

2010/3/9 vivian huang <vivia...@gmail.com>:

vivian huang

unread,
Mar 9, 2010, 4:18:15 AM3/9/10
to sh...@googlegroups.com
woo...不费吧。谢了。。。囧的消失

2010/3/9 Chaos Eternal <chaose...@shlug.org>

Lightning

unread,
Mar 9, 2010, 4:25:46 AM3/9/10
to sh...@googlegroups.com
嗯,明白你说的情况了,printf 会把空格分割的字段串以换行分割的形式输出。

vivian huang 写道:
> 严格地说,的确。。。一开始没描述清楚
>
> 2010/3/9 Lightning <ligh...@shlug.org <mailto:ligh...@shlug.org>>
>
> 我前面说的printf就可以满足你的要求了。
>

Chaos Eternal

unread,
Mar 9, 2010, 4:40:53 AM3/9/10
to sh...@googlegroups.com
开个putty到tux上去试一下就知道了!

2010/3/9 Lightning <ligh...@shlug.org>:

Zhang Chi

unread,
Mar 9, 2010, 9:43:41 AM3/9/10
to sh...@googlegroups.com
打扰一下…不过上面说的tux是哪里?我只知道unix-center有免费的ssh可以用。

在 10-3-9,Chaos Eternal<chaose...@shlug.org> 写道:

--
从我的移动设备发送

Sherlock

unread,
Mar 10, 2010, 5:28:04 AM3/10/10
to sh...@googlegroups.com
secret makes tux tux :p

2010/3/9 Zhang Chi <zhang...@gmail.com>



--
==========
     InitX
==========
Reply all
Reply to author
Forward
0 new messages