如何解決下面的代碼,以便它可以存盤的結果sed,這將取代_
使用-?
我的代碼:
names=()
for entry_ in $foo
do
names =($entry_ | sed -e "s/_/-/g")
done
echo names
uj5u.com熱心網友回復:
您不需要這樣做sed,您可以使用 bash 的內置引數擴展 替換功能將所有_字符替換為-: ${var//_/-}。您甚至可以使用它在單個操作中對整個元素串列執行此操作,但如何執行取決于源變數foo, 實際是什么。
如果foo是一個陣列(更好的做事方式),您可以將[@](“獲取陣列的所有元素”)與替換組合:
names=( "${foo[@]//_/-}" )
如果foo是一個普通字串,并且您需要使用分詞將其分解為陣列的元素,則可以在沒有[@](因為它不是陣列)或雙引號(防止分詞)的情況下執行基本相同的操作:
names=( ${foo//_/-} )
注意:如果可能的話,我建議避免分詞——它經常做一些接近你想要的東西,但幾乎從不完全是你想要的。
Ps 我第三次推薦shellcheck。除其他外,它會將涉及分詞的任何內容標記為可能的錯誤。
uj5u.com熱心網友回復:
這應該足以讓你到達那里。
names=()
names =$(echo "hello_world" | sed -e "s/_/-/g")
echo $names
請注意,$在回顯變數之前您需要。
還。考慮為您的代碼編輯器安裝shellcheck,它將幫助您發現偷偷摸摸的錯誤并構建更好的 shell 編程實踐。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/362961.html
上一篇:回圈運行5次但只要求輸入2次
