2012-05-14 69 views
0

在我bash_profile我有這樣的:從bash腳本/函數中調用perl替換?

function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$a" ;} 

我想運行ht做就送入刪除與的HTTrack簽名的HTML註釋文件的在線更換,但是當我運行此,

ht file.html 

我得到:

Can't open : No such file or directory. 

我懷疑這是因爲在我的$一個報價,其與干擾的正在饋送命令。也許它將字面上的"加上文件名,或者這種性質的東西,總的來說它變成了錯誤的文件名。

我試圖刪除我的$a周圍的雙引號,但似乎沒有做我想要的。我該如何解決這個問題?

+1

定義了$ a嗎?我沒有在你的代碼中看到它。 – jwd

+0

我認爲'$ a'是魔術bash語法的命令行參數饋送。我在另一個函數中使用它來做同樣的事情。 –

+1

我想你是指'$ @'。通常引用,就像你一樣,''$ @「'。 – jwd

回答

3

你必須告訴perl你想要運行什麼文件。更改爲:

function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "[email protected]";} 

注意[email protected]代替最後的「$ a」。正如@jwd指出的那樣,在大多數情況下,它甚至比$*更好。

+0

這個也可以! 6分鐘直到我可以接受 –

+3

請注意'$ @'通常比'$ *'更受歡迎,因爲當引用(如「$ @」')時,它將正確處理包含空格的文件名。 – jwd