第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go Makefile中bash命令的用法

Go Makefile中bash命令的用法

Go
胡子哥哥 2021-03-31 15:46:10
通過命令行(MacOS)_test.go使用時,可以排除文件go run。go run $(ls -1 dir/*.go | grep -v _test.go)但是,似乎通過Go makefile并沒有以類似的方式使用該命令。例如,start:     go run $(ls -1 dir/*.go | grep -v _test.go)和start:     go run `$(ls -1 dir/\*.go | grep -v _test.go)`兩者都會導致go run: no go files listedgrep在Go Makefile中使用和類似命令的正確方法是什么?
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

美元符號具有特殊的制造意義:它們引入了make變量和函數(shù)。如果要在配方中使用文字美元符號,則需要通過將其加倍來對其進行轉義:

start:
        go run $$(ls -1 dir/*.go | grep -v _test.go)


查看完整回答
反對 回復 2021-04-19
?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

正如在另一個答案中已經(jīng)提到的那樣,簡單的解決方案是將所有美元符號加倍,以防止Make嘗試將它們解釋為Make變量或函數(shù)。等效地,您可以將過時的命令替換語法`ls ... stuff`與反引號一起使用,而不是 $(ls ... stuff)

但是,這種方法從根本上來說是有缺陷的,因為它陷入影響解析ls輸出的極端情況的深淵。一種更可靠的方法是使用Make函數(shù)來表達模式。

go run $(filter-out %_test.go,$(wildcard dir/*.go))

我還將提到Bash具有一個稱為擴展的globlob(google extglob)的功能,您可以在其中說一些類似于!(dir/*_test.go)dir/*.go從通配符匹配中排除文件集的內容。但是,當Make具有提供相同功能的內置功能時,您可能不想破壞Makefile的可移植性(盡管語法更為冗長。實際上,這是一個功能,因為它使新維護者可以輕松地進行操作) google函數(shù)名稱并找出代碼的作用?。?/p>


查看完整回答
反對 回復 2021-04-19
  • 2 回答
  • 0 關注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號