我在 React 專案 shell 腳本中遇到了以下函式,并且對 shell 腳本很陌生,所以想確認我對它的理解。
用簡單的英語來說,是檢查是否存在 package.json 檔案然后讀取該檔案的函式,但我不確定 glob 模式在做什么。該函式正在傳遞一個預提交字串,所以它會匹配以下內容嗎?如果它也與第二個匹配,它似乎有點奇怪
"precommit":
"precommit" abcde:
has_hook_script () {
[ -f package.json ] && cat package.json | grep -q "\"$1\"[[:space:]]*:"
}
uj5u.com熱心網友回復:
基本上,該函式檢查 JSON 以查看是否存在與傳遞給該函式的第一個引數同名的鍵。
逐步分解:
[ -f package.json ]
“package.json”是否存在,它是一個檔案嗎?
&&
如果是這樣,那么:
cat package.json |
將其內容通過管道傳遞給以下命令:
grep -q
grep 的安靜模式,它將查找與以下正則運算式的匹配項:
\"$1\"[[:space:]]*:
\"$1\" - 在雙引號內傳遞給函式的第一個引數(這就是雙引號被轉義的原因)
后跟[[:space:]]*- 零個或多個空格(在正則運算式背景關系中,* 表示它前面的 0 個或多個字符)。
后跟一個:- 有效的 JSON 在鍵名和冒號之間可以有 0 個或多個空格
由于 grep 是函式中執行的最后一個命令,因此如果找到匹配的鍵,該函式將成功測驗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416877.html
標籤:
上一篇:為什么read沒有正常的手冊頁?
