狐的傳說(shuō)
2023-06-19 17:20:17
我在子目錄下有一個(gè)插件列表。我想用一個(gè)命令構(gòu)建所有這些。有一個(gè)示例目錄布局。plugins/cat/cat.goplugins/dog/dog.goplugins/cow/cow.go我現(xiàn)在像這樣構(gòu)建它們:go build -i -buildmode=plugin -o build/cat.so plugins/cat/cat.gogo build -i -buildmode=plugin -o build/dog.so plugins/dog/dog.gogo build -i -buildmode=plugin -o build/cow.so plugins/cow/cow.go還有另一個(gè)命令(因?yàn)樗?Makefile 中),它幫助我更接近:# Ex.: make bin-so TARGET=catbin-so: builddir go build -i -buildmode=plugin -o build/$(TARGET).so plugins/$(TARGET)/$(TARGET).go我想創(chuàng)建一行來(lái)構(gòu)建這些插件。我發(fā)現(xiàn)了如何列出文件夾名稱,但我必須在上面的命令中以某種方式使用它。find ./plugins -mindepth 1 -maxdepth 1 -type d | awk 'sub(/^.*\//, "")'所以它會(huì)列出文件夾的名稱,這些對(duì)我來(lái)說(shuō)很好,但我必須將它重定向到插件構(gòu)建器命令。我想要類似的東西(只是一個(gè)例子):find ./plugins -mindepth 1 -maxdepth 1 -type d | awk 'sub(/^.*\//, "")' | go build -i -buildmode=plugin -o build/$1).so plugins/$1/$1.go
1 回答

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
find您可以使用一個(gè)選項(xiàng)在一個(gè)命令中執(zhí)行此操作,-execdir該選項(xiàng)允許您直接在文件的基本名稱上運(yùn)行命令
find ./plugins -mindepth 1 -maxdepth 1 -type d -execdir bash -c '
? ? for arg; do
? ? ? ? name="${arg##*./}"
? ? ? ? go build -i -buildmode=plugin -o build/"${name}".so plugins/"${name}"/"${name}".go
? ? done' _ {} +
find這比在獲得相同結(jié)果后使用多個(gè)管道要好得多。將 中的部分想象成sh -c '..'一個(gè)單獨(dú)的腳本,并且您將參數(shù)傳遞給帶有返回名稱./cow.go等的腳本。
此處的優(yōu)點(diǎn)-execdir是您無(wú)需擔(dān)心目錄名稱之前的直接路徑。您將獲得找到的目錄的最終基本名稱。
- 1 回答
- 0 關(guān)注
- 184 瀏覽
添加回答
舉報(bào)
0/150
提交
取消