在bash我有路徑名稱的數組,我想使用SED不同者,像這樣以替換它們:的bash:sed的查找和替換的數組元素的路徑
sed '[email protected]^(.*?)master_repo(.*?)@\1"${SOME_REPO_NAME}"\[email protected]' <<< ${FULL_TGT_DIRS[${i}]}
甲這是樣品路徑名的陣列的元素將是:
/Volumes/munki/master_repo/pkgs/apps
我想替換的路徑名「master_repo」與例如「somedir」,其被存儲在$SOME_REPO_NAME
,所以我得到:
/Volumes/munki/somedir/pkgs/apps
或者與內置的字符串替換:
> /usr/local/bin/repomgr: line 135:
> /Volumes/munki/master_repo/pkgs/apps: syntax error: operand expected
> (error token is "/Volumes/munki/master_repo/pkgs/apps")
我使用不同separaters和SED選項,以及嘗試:
for i in ${FULL_TGT_DIRS[@]}
do
FULL_TGT_DIRS[$i]=${FULL_TGT_DIRS[$i]/master_repo/$SOME_REPO_NAME}
#sed '[email protected]^(.*?)master_repo(.*?)@\1"${SOME_REPO_NAME}"\[email protected]' <<< ${FULL_TGT_DIRS[${i}]}
done
運行我的劇本的時候,我總是得到以下錯誤通過不同的報價星座來洗牌。我不會每天寫bash腳本,所以也許我錯過了一些東西?
順便說一句,我在Mac上運行它,因此只有在我的處置bash 3.2。
我根據你的回答更新了我的問題。我仍然得到同樣的錯誤。 – pming
我已更新答案以顯示循環數組的正確方法。 – Barmar
是的,我需要修改陣列的值。最後一塊給我解決。謝謝! – pming