2010-02-01 47 views
1

我有bash脚本如solaris的回声 “[” 字符问题


for i in `echo a [ matched.lines` 
do 
echo $i 
done 

为什么下面

该脚本的输出

[

匹配。行


我想输出的文本,因为它是

一个[matched.lines


我怎么能做到这一点

感谢您的帮助

+0

为什么使用外部循环而不是单个命令? 'echo a [matched.lines' – 2010-02-01 11:16:19

+0

不,这里只是演示的目的,我有几行文件来读取,其中包括“[”所以代码有循环 – soField 2010-02-01 11:51:33

+0

方括号在这里不是问题。更多地描述你真正想做的事情。提供更好,更完整的示例。 – 2010-02-02 01:52:10

回答

2

脚本回声每个令牌分开。在do ... done内使用echo -n $i

+0

但是这次在输出上没有新行:( – soField 2010-02-01 11:08:48

+1

只是在程序中追加了尾随'echo' – ShiDoiSi 2010-02-01 11:13:57

+0

跟踪回显是什么意思? – soField 2010-02-01 11:50:51

0

我已经取代'人物'与SED全局替换,并没有求助

对脚本感谢的输出没有新线
0

使用shell来读取一个文件,使用而读循环

while read -r loop 
do 
case "$line" in 
    *]*) echo $line;; 
esac 
done <"file" 
0

对不起,但这不会做你想做的。您的for循环使用空格作为其参数的分隔符。这会导致项目中的每一个在单独的一行上回显。添加-n在这里不起作用,因为你不会在该行的结尾处获得\ n。老实说,我不明白你想在这里做什么。如果你只是想呼应这种“一[matched.lines”作为一个字符串,你可以这样做:


for i in "a [ matched.lines";do 
    echo $i 
done 

但我觉得你会误解如何使用for循环....