我有一個Xcode項目,其中包含可以複製一些文件的構建階段。假設我想將[project directory] / foo/bar中的所有rtf文件複製到[project directory] / bar/foo。我會用這樣的命令:在Xcode的運行腳本構建階段中使用bash
cp -v foo/bar/*.rtf bar/foo/
在終端中執行這也正是我期望:在富/酒吧所有的RTF文件複製到酒吧/ foo中。但是,建設的時候,我得到生成錯誤從CP:
Cp: foo/bar/*.rtf: No such file or directory
cp
似乎無法找到這些文件。就好像bash不擴展通配符。當腳本運行時,我知道我在正確的目錄中,因爲我在cp
之前運行了pwd
,它給出了我的預期。我已經將腳本階段的Shell設置爲/ bin/bash。我究竟做錯了什麼?我能否在Run Script構建階段使用globs?如果是這樣,爲什麼?
更新:我found out,你可以關閉這樣的bash通配符:
set -o noglob
,然後重新上是這樣的:
set +o noglob
而且see all bash options and their status這樣的:
set -o
我試過用t他後者在我的運行腳本階段,它顯示noglob
已禁用。所以noglob
不是這裏的問題。
直接的問題是'foo/bar/*。rtf' *不匹配任何東西,所以它作爲一個文字字符串傳遞給'cp'。這是因爲當前工作目錄不是'[project directory]',或者因爲'foo/bar'中沒有RTF文件。 – chepner
@chepner我已經證實我在項目目錄中,正如我所期望的(通過pwd),並且在foo/bar中有RTF文件。在Terminal中從項目目錄執行相同的命令就是我所期望的。 –
@chepner我也試過使用完整路徑(〜/ Documents/Code/project/foo/bar/* .rtf)。同樣的結果。 –