首页 > 解决方案 > 在 shell 脚本中使用 xml 文件中的键读取值

问题描述

我需要使用 shell 脚本从 app.config 文件中读取环境变量,并且需要在 constant.cs 文件中进行设置。

这是我正在关注的链接:

https://github.com/microsoft/appcenter/blob/master/sample-build-scripts/xamarin/app-constants/appcenter-pre-build.sh

我有来自 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 文件

标签: bashshellxamarin.formssh

解决方案


您没有提供文件的格式,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


推荐阅读