2016-05-26 102 views
1

我寫過一個shell腳本,它讀取文件並獲取執行特定任務所需的文件路徑,但如果文件路徑包含任何特殊字符沒有服用完整的路徑如何在shell中獲取特殊字符作爲普通字符串

EG的路徑\網絡\搭\ AB 我得到的值是\ WEB AKE \ AB這治療\ T作爲標籤和打印標籤那麼如何避免這種

我的代碼 grepresult = grep "Cannot " input.txt | cut -f 2,3 -d":"

回聲$ grepresult

所以,請幫助我怎樣才能得到的特殊字符轉換成字符串

回答

1

在POSIX兼容的外殼,有一些例外,反斜線的解釋是默認啓用。

的問題,因爲你知道的是,shell解釋\以其特殊的meaning.To在輸出反斜線,只需反斜線它。

輸入

$ grepresult="sometestt\n\b\a" 


腳本

echo "${grepresult//\\/\\\\}" 
#since \ has special meaning here as well, `\\` makes the character `\` 

應該做的伎倆。在Shell Parameter Substitution中查找${var//Pattern/Replacement}

輸出

$ echo "${grepresult//\\/\\\\}" 
sometestt\n\b\a 

還不錯檢查Treatment of backslashes across shells

0

特殊字符存儲在正確的變量grepresult,它是echo誰轉換\tTAB

嘗試:

echo -E $grepresult 

其中-E防止echo從做反斜槓

相關問題