假設我在 Bash 中有以下內容:
FOO=/a/c*/d/
echo PATH=${FOO}:${PATH} >> .env
當我檢查檔案的內容時,.env路徑仍然包含通配符。假設只有一個匹配項,如何確保將通配符擴展到路徑,以便回顯時檔案中不存在通配符?
uj5u.com熱心網友回復:
使它成為一個陣列賦值,然后使用陣列的第一個元素(以保持“假設只有一個匹配”):
foo=( /a/c*/d/ )
echo "PATH=${foo[0]}:$PATH" >>.env
相比之下,如果您不是特別想要這個假設,即使在有多個匹配項的情況下,您也可以使用${array[*]}after setting:作為第一個字符IFS來正確擴展:
foo=( /a/c*/d/ )
IFS=:
echo "PATH=${foo[*]}:$PATH" >>.env
IFS通過將路徑串列擴展到單獨的變數,您可以避免更改或支付啟動子流程的效率成本:
printf -v path_prefix '%s:' /a/c*/d/
echo "PATH=${path_prefix}$PATH" >>.env
uj5u.com熱心網友回復:
或許還有
foo=( /a/c*/d/ )
echo "PATH=$(IFS=:; echo "${foo[*]}"):$PATH" >> .env
所以你不必恢復 IFS
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392375.html
下一篇:按字串名稱的Bash參考變數
