簡體   English   中英

Bash 用變量值替換字符串

[英]Bash replace string with variable value

我正在嘗試制作一個腳本來用變量中定義的附加權限替換AndroidManifest.xml中的字符串,但是我在模式定義方面失敗了。

我發現的所有示例都使用簡單的替換字符串,沒有像這種情況下的任何特殊字符。

這是我到目前為止嘗試過的

#!/usr/bin/env bash
CUSTOMPERMISSION=android.permission.INTERNET,android.permission.ACCESS_NETWORK_STATE

echo $CUSTOMPERMISSION
printf "\n"
IFS=','

read -a permissionArray <<< $CUSTOMPERMISSION

printf "There are ${#permissionArray[*]} words in the text.\n\n"

ADDME=""
# Print each value of the array by using the loop
for (( n=0; n < ${#permissionArray[@]}; n++))
do
  ADDME+="<uses-permission android:name=\"${permissionArray[n]}\"/>\n"
done

printf "$ADDME"

REPLACE="<!-- custom_permisions -->"

perl -pe 's/'"${REPLACE}"'/'"${ADDME}"'/' -i AndroidManifest.xml
#sed -i "s/<!-- custom_permisions -->/"${ADDME}"/g" AndroidManifest.xml

我想用新行保留ADDME的格式,以便格式保持不變。 我試圖為<添加\並且-由於腳本失敗而試圖逃避它們

syntax error at -e line 1, near "n<"
Execution of -e aborted due to compilation errors.

我不確定我在哪里 go 錯了,我一直在搜索結果中轉圈,所以我希望有人知道答案。

試試這個命令

REPLACE='<\!-- custom_permisions -->'
CUSTOMPERMISSION=android.permission.INTERNET,android.permission.ACCESS_NETWORK_STATE
ADDME=$(printf '<uses-permission android:name=\\"%s\\"\\/>\\n' ${CUSTOMPERMISSION//,/ })
ADDME=${ADDME%\\n*}
sed "s|$REPLACE|$ADDME|g" AndroidManifest.xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM