2012-05-05 51 views
3

我正在編寫一個bash腳本,它在從目錄B運行時鏡像目錄B內的目錄A的目錄結構。處理查找返回的文件路徑中的單引號

目前,我這樣做如下:

#!/bin/bash   

dirify() { 
    echo $1 
} 
export -f dirify 

find "../test" -type d -exec bash -c "dirify '{}'" \; 

我從目錄B運行此腳本,../test是目錄A。 幸運的是,我用來測試的目錄包含名稱中包含'的文件夾。當運行該腳本時,bash提供了以下錯誤,當它到達這些目錄:

> bash: -c: line 0: unexpected EOF while looking for matching `'' 
> bash: -c: line 1: syntax error: unexpected end of file 

(注意,第0行和第1行指的是線dirify()函數內)

的更簡化的方式示出了該問題如下:

find "../test" -exec bash -c "echo '{}'" \;

該示例產生相同的誤差。

無論如何,這是一個問題,因爲在生產中,我不能假定文件路徑將不包含'字符。

無論如何圍繞這個問題?

回答

2

將它作爲參數傳遞。

bash -c 'dirify "$1"' dirify {} 
+0

太棒了!謝謝。你能簡單地解釋一下這個語法是如何工作 – finiteloop

+0

當通過'-c'運行腳本時,bash會接受附加參數並從'$ 0'開始分配它們。 –

+0

謝謝!很有幫助。 – finiteloop