0
我在bash腳本中使用find
搜索文件夾並存儲其路徑。「find」刪除bash中的多個空格
線如下:
findfolder=$(eval echo $(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1"))
和它的作品幾乎在任何情況下,但是,出於某種原因,如果我搜索了其在這兩個空格的文件夾,它會返回一個路徑,其中所有的雙重空間已被轉換爲單個空間。
所以,如果我在尋找一個文件夾名爲「我的音樂」與「我」和「音樂」之間的兩個空間,它將返回「我的音樂」一個空間。
如果我在終端直接運行完全相同的命令,我會得到正確的文件夾。
這是怎麼發生的? (讓我知道是否需要更多的代碼,因爲我從終端運行完全相同的命令,似乎並不相關,不過我們現在不需要明顯的原因牆)。
編輯:
它現在的工作。第一個eval或回聲(不確定,但我的測試表明它是eval)導致輸出崩潰,消除「不必要的」間距。工作代碼是:
findfolder="$(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1")"
有趣。但是,你需要雙$($())和evals嗎? – 2012-03-31 21:28:30
@PéterVarga在使用eval之前,我沒有得到它的工作。他們解決了使用echo將變量分配給變量的問題。 – keyser 2012-03-31 21:30:13
@PéterVarga我現在解決了它。第一個評估和回聲是不需要的,並正在導致崩潰。奇怪的是,我在某些時候發現他們是必要的 – keyser 2012-03-31 21:42:07