Как автоматизировать и обобщить следующую команду, используемую в скрипте bash, для разных параметров и значений?

Я ищу три места, как показано ниже. Комментарии приветствуются.

public URL getResource(String resource){

    URL url ;

    //Try with the Thread Context Loader. 
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    if(classLoader != null){
        url = classLoader.getResource(resource);
        if(url != null){
            return url;
        }
    }

    //Let's now try with the classloader that loaded this class.
    classLoader = Loader.class.getClassLoader();
    if(classLoader != null){
        url = classLoader.getResource(resource);
        if(url != null){
            return url;
        }
    }

    //Last ditch attempt. Get the resource from the classpath.
    return ClassLoader.getSystemResource(resource);
}
4
задан Bsquare ℬℬ 18 January 2019 в 13:23
поделиться

1 ответ

Вы можете сделать это сексуально, построив jsonParameters из указанных key=value parameters:

#!/bin/bash

jsonParameters=""
while IFS=',' read -r -a parameterEntries; do
  for parameterEntry in "${parameterEntries[@]}"; do
    IFS='=' read -r key value <<< "$parameterEntry"
    [ ! -z "$jsonParameters" ] && jsonParameters="$jsonParameters,"
    jsonParameters="$jsonParameters {\"name\":\"$key\", \"value\": \"$value\"}"
  done
done <<< "$@"

Объяснения:

  • первый цикл создаст массив с именем parameterEntries, со всеми указанными вами параметрами каждый элемент будет содержать key=value
  • , затем второй цикл, который выполняет итерацию для каждого элемента этого массива, извлечет ключ и его значение
  • в конце концов, это всего лишь запись синтаксиса, чтобы получить желаемый вывод JSON
  • , [ ! -z "$jsonParameters" ] && jsonParameters="$jsonParameters," просто для добавления разделяющей комы, только если имеется более одного элемента

Тогда вы просто нужно использовать $jsonParameters там, где вы хотите:

curl -X POST JENKINS_URL/job/JOB_NAME/build \
  --user USER:TOKEN \
  --data-urlencode json="{\"parameter\": [$jsonParameters]}"
0
ответ дан Bsquare ℬℬ 18 January 2019 в 13:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: