的我有文件名,我想通過stow
被忽略的陣列,例如構建一個外部程序的命令行標誌出的bash陣列
IGNORES=('post_install\.sh' 'dummy')
(實際上,該名單是不固定的但從文件讀取並不總是具有相同的長度,所以像下面的硬編碼將無法工作)。
我形成命令行標誌出數組的像這樣
IGNORES=("${IGNORES[@]/#/--ignore=\'}")
IGNORES=("${IGNORES[@]/%/\'}")
當我做
stow -v "${IGNORES[@]}" -t $home $pkg
然而,忽略不被平放尊重,但它並沒有抱怨無效的參數無論是。直接寫
stow -v --ignore='post_install\.sh' --ignore='ignore' -t $home $pkg
雖然工作。
這兩種方式傳遞--ignore
標誌有什麼區別,有什麼想法如何解決這個問題?據我的理解,"${IGNORES[@]}"
應評估爲每個數組元素一個單詞,並具有預期的效果(我試圖刪除引號和索引與*
陣列,但也無濟於事)。
謝謝!
在'post_install.sh'中轉義'.'是不必要的,但是如果您沒有另外引用文件名則無害;在內部引號中,您正在向名稱添加文字反斜槓。 – chepner
這是我需要驗證的一件事。 'man stow'表示這些名字被解釋爲perl正則表達式,它們需要在文件名的末尾匹配,所以我認爲我需要避開這個點才能使模式正確(儘管一個點當然會匹配任何包括一個點的字符,但那不是我想要的)。 – Wisperwind
啊,是的,這是不同的。 – chepner