bash - 在 shell 脚本中使用 xml 文件中的键读取值
问题描述
我需要使用 shell 脚本从 app.config 文件中读取环境变量,并且需要在 constant.cs 文件中进行设置。
这是我正在关注的链接:
我有来自 xamarin.form 的 app.config 文件,格式如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="appId" value="12974" />
<add key="url" value="https://abc.xyz.com" />
</appSettings>
这是我用来读取 config.file 并设置为 constant.cs 文件的代码。但我不确定哪一个会起作用。
if [ -e "$APP_CONSTANT_FILE" ]
then
if [ -e "$ENV_FILE" ]
then
echo "Both Config files are available"
#name=applicationID
#$ awk -F\" -v n="$name" '/<ATTRIBUTE NAME="/ && $2==n {print $4}' data
#awk -F"\"" ' /AppId/ {print $4}' = -F"\"" ' /appID/ {print $4}' $APP_CONSTANT_FILE $ENV_FILE
awk 'FNR==NR{a[FNR]=$0;next}{$NF=gensub(/value=".*"\/>/,"value=\""a[FNR]"\"\/>","g",$NF);print}' $APP_CONSTANT_FILE $ENV_FILE
#sed -i '' 's#ApiUrl = "[-A-Za-z0-9:_./]*"#ApiUrl = "'$API_URL'"#' $APP_CONSTANT_FILE
echo "File content:"
cat $APP_CONSTANT_FILE
else
echo "Can not locate $ENV_FILE file"
exit
fi
else
echo "Can not locate $APP_CONSTANT_FILE file"
exit
fi
请为我提供参考或提示以按键读取值并将其设置为 .cs 文件
解决方案
您没有提供文件的格式,constant.cs
但您可以从这一行开始:
cat config.xml | grep '<add ' | sed -E 's/.*key="?([^ "]*)"? value=([^ ]*) .*/\1 = \2;/'
输出将是:
appId = "12974";
url = "https://abc.xyz.com";
如果您想要不同的输出,只需更改这部分代码:键\1 = \2;
在哪里,值在哪里。\1
\2
推荐阅读
- git - 向组织内的私有存储库添加了部署密钥,但仍无法克隆存储库
- javascript - 在 Catch 块中有条件地发送响应
- javascript - 我怎样才能把它从字符串变成 HTML?
- python - 如何使用 Transcrypt 在 Python 中导入 js 模块
- c# - Entity Framework 6 和 DBContext 或 DBQuery 或 DBSet 或 ObjectQuery 与标量变量
- scala - 使用 Spark 2.4 从 Azure Data Lake Storage V2 读取文件
- excel - 如果单元格为空白,则引用一个单元格。否则忽略[已回答]
- java - Java 将 long 转换为 int
- javascript - Vue.js:在 JavaScript 事件上播放 CSS 动画
- python - 如何从 IBMdb2 数据库中检索元素?