2010-02-01 46 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循環....