也許最簡單的例子來說:sh讀命令在輸入中吃了斜槓?
$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
看來,「讀」命令解釋斜線在輸入作爲逃逸,並刪除它們。我需要逐行處理文件而不更改其內容,我不知道如何在此處停止讀取智能。有任何想法嗎?
也許最簡單的例子來說:sh讀命令在輸入中吃了斜槓?
$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
看來,「讀」命令解釋斜線在輸入作爲逃逸,並刪除它們。我需要逐行處理文件而不更改其內容,我不知道如何在此處停止讀取智能。有任何想法嗎?
Accrding到:http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html:
-r
如果這個選項,則反斜槓不作爲轉義字符。 反斜槓被認爲是該行的部分 。特別是, 反斜槓 - 換行對可能不會用作 作爲續行。
它適用於我的機器。
$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
使用read -r
,按http://www.ss64.com/bash/read.html:
-r
如果這個選項,則反斜槓不作爲轉義字符。
太棒了,謝謝!我覺得沒有找到這個文件的愚蠢,但這是很難搜索的東西之一,因爲這些條款是相當通用的:( – 2009-05-29 04:57:55
順便說一句,你用什麼外殼不需要-r?我是使用bash。 – 2009-05-29 04:59:15