我想做以下事情:
- 獲取所有依賴項(目錄名稱)
- 獲取當前目錄的基本名稱
- 由于當前目錄不是依賴項,請擺脫它
- 列印它們
到目前為止我所擁有的(來自bashrc):
export dep=$({ tmp=$(ls /usr/local/lib/node_modules/); echo ${tmp//$(basename $(pwd))/}; })
目標是將它放在變數中,而不是函式或別名中,因為我想稍后使用它(例如 for npm link $dep),如果它是函式,我將無法使用它。
但是當前輸出確實包括當前目錄。如果它是從當前目錄呼叫的,則不會包含當前目錄。所以我猜這個變數沒有被重新執行以考慮到它改變了它的目錄(從 bashrc 所在的位置,到我現在所在的位置)。
那么如何使它不包括當前目錄呢?
uj5u.com熱心網友回復:
變數只是靜態文本,shell(或者,更不用說字串本身)絕不會跟蹤它的值是如何計算的;它只是一個字符序列。如果您需要根據外部情況更改值,則需要在這些情況下重新分配它,或者簡單地使用腳本或函式而不是變數。
這是一個簡單的函式,它避免嘗試決議來自的輸出ls:
getdep () {
( cd /usr/local/lib/node_modules
printf '%s\n' * ) |
grep -vFx "$(basename "$(pwd)")"
}
你會這樣稱呼它
dep=$(getdep)
當你需要更新時dep,或者干脆$(getdep)用$dep.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/486364.html
上一篇:替換條件函式進行重構
