쉘 스크립트의 변수 값을 상수 파일로 복사

쉘 스크립트의 변수 값을 상수 파일로 복사

appcenter-pre-build.sh환경 유형에 따라 그 안에 다른 스크립트를 실행하고 있습니다 . 환경이 UAT이면 실행됩니다 uat-pre-build.sh.

이것은appcenter-pre-build.sh

if [ -z "$ENV_TYPE" ]
then
    echo "You need define the ENV_TYPE variable in App Center"
    exit
fi
echo "ENV_TYPE is : - $ENV_TYPE"    
if [ "UAT" = "$ENV_TYPE" ]
then
    echo "Environment type : UAT"
    ENV_FILE=$APPCENTER_SOURCE_DIRECTORY/ABC/config/uat-pre-build.sh
else
    echo "you need to mentioned correct envrionment type"
    exit
fi
echo "Environment file : $ENV_FILE"
sh "$ENV_FILE"

빌드 환경에 따라 세 가지 다른 스크립트가 있습니다.

  1. uat-prebuild.sh
  2. developmentprebuild.sh
  3. 제품 prebuild.sh

위 스크립트에서는 변수 값을 읽고 이를 ConfigurationHelper.cs에 할당하려고 합니다.

이것은 내 uat-pre-build.sh입니다.

APP_ID=b1a4a39f-4d89-4f04-98d8-2a20eda89aad
# Get ConfigurationHelper.cs from project
APP_CONSTANT_FILE=$APPCENTER_SOURCE_DIRECTORY/helpers/ConfigurationHelper.cs

if [ -e "$APP_CONSTANT_FILE" ]
then
    echo "Updating environment configs in AppConstant.cs"

    sed -i '' 's#ApplicationID = "[-A-Za-z0-9:_./]*"#ApplicationID = "'$APP_ID'"#' $APP_CONSTANT_FILE

    echo "File content:"
    cat $APP_CONSTANT_FILE
else
        echo "Can not locate $APP_CONSTANT_FILE file"
fi  

이것은 ConfigurationHelper.cs입니다.

public class ConfigurationHelper
{
    public static string ApplicationID = string.Empty;
    static ConfigurationHelper(){}

}

스크립트를 실행할 수 있지만 APP_ID 값을 uat-pre-build.sh에 할당할 수 없습니다 ConfigurationHelper.cs. 다음 줄이 올바르게 실행되지 않는 것 같습니다.

sed -i '' 's#ApplicationID = "[-A-Za-z0-9:_./]*"#ApplicationID = "'$APP_ID'"#' $APP_CONSTANT_FILE      

이는 Application Center의 출력입니다.

[command]/bin/bash 

/Users/vsts/agent/2.153.1/work/1/s/ABC.Android/appcenter-pre-build.sh
ENV_TYPE is : - UAT
Environment type : UAT
Environment file : /Users/vsts/agent/2.153.1/work/1/s/ABC/config/uat-pre-build.sh
Updating environment configs in AppConstant.cs
File content:

namespace ABC.Business.Helpers
{
/// <summary>
/// The configuration helper.
/// </summary>
public class ConfigurationHelper
{
    public static string ApplicationID = string.Empty;


    /// <summary>
    /// Initializes static members of the <see cref="ConfigurationHelper"/> class.
    /// </summary>
    static ConfigurationHelper()
    {
    }

    }

}

이 문제를 해결하도록 도와주세요.

답변1

string.Empty파일 에서 바꾸려는 것 같지만 ConfigurationHelper.cs발견한 대로 사용하는 대체 항목이 일치하지 않습니다. 당신은 ApplicationID = "[-A-Za-z0-9:_./]*". 이는 일치할 수 있습니다.

public static string ApplicationID = "string.Empty";

그러나 일치 패턴에 큰따옴표 문자를 명시적으로 지정했으므로 해당 문자가 소스 코드에 나타나야 합니다.

직접 매칭을 시도해 볼 수 있습니다 ApplicationID = string.Empty. string.Empty따옴표 붙은 문자열 중 하나의 복잡성이 정말로 필요한 경우 어떻게 해야 합니까?ApplicationID = \(string.Empty|".*"\)

관련 정보