Переменные времени выполнения Control-m: sh против powershell

Я столкнулся с проблемой, связанной с переменными среды выполнения в control-m.
Мне нужно перенести некоторые сценарии PowerShell в оболочку Linux, и во время выполнения они работают иначе.

В целом скрипт powershell выглядит так:

    write-HOST "SOME_VARIABLE_NO2=OTHER_VAL2"
    write-HOST "SOME_VARIABLE_NO3=OTHER_VAL3"
    write-HOST "SOME_VARIABLE_NO4=OTHER_VAL4"

Linux-скрипт

    #!/bin/sh

    echo "SOME_VARIABLE_NO2=OTHER_VAL2"
    echo "SOME_VARIABLE_NO3=OTHER_VAL3"
    echo "SOME_VARIABLE_NO4=OTHER_VAL4"

Теперь во время выполнения у меня есть следующие результаты

  1. Для PowerShell:
>SOME_VARIABLE_NO2=OTHER_VAL2
>[Extracted runtime parameter: 'RT_SOME_VARIABLE_NO2' ==> 'OTHER_VAL2'] 
>
>SOME_VARIABLE_NO3=OTHER_VAL3
>[Extracted runtime parameter: 'RT_SOME_VARIABLE_NO3' ==> 'OTHER_VAL3'] 
>
>SOME_VARIABLE_NO4=OTHER_VAL4
>[Extracted runtime parameter: 'RT_SOME_VARIABLE_NO4' ==> 'OTHER_VAL4'] 
  1. Для Linux
>SOME_VARIABLE_NO2=OTHER_VAL2
>SOME_VARIABLE_NO3=OTHER_VAL3
>SOME_VARIABLE_NO4=OTHER_VAL4
>
>[Extracted runtime parameter: 'RT_SOME_VARIABLE_NO3' ==> 'OTHER_VAL3'] 
>[Extracted runtime parameter: 'RT_SOME_VARIABLE_NO2' ==> 'OTHER_VAL2'] 
>[Extracted runtime parameter: 'RT_SOME_VARIABLE_NO4' ==> 'OTHER_VAL4'] 

Как заставить bash и control-m работать так же, как ps1&control-m? Это вопрос конфигурации control-m?

В powershell команда write-host может присвоить значение переменной сразу после выполнения этой строки. В bash весь скрипт должен выполняться до того, как значение переменной будет присвоено. Я ищу решение, которое позволяет control-m назначать переменную в bash, как это работает в powershell - после выполнения определенной строки

Мне нужны эти переменные во время выполнения, потому что они хранят, например, PID процесса, чтобы я мог его убить (по какой-либо причине)

Должен признаться, что понятия не имею, как работает control-m. Я могу задать вопрос тому, у кого есть доступ, но в данный момент я даже не знаю, что спросить..


person someName    schedule 04.09.2020    source источник


Ответы (1)


Лучшей практикой в ​​этом случае является использование определения задания Control-M для хранения ваших переменных.

В Job Def, посередине первой вкладки, находится поле Variables. Здесь вы можете использовать специальную переменную Control-M %%PARMn, как показано ниже:

Тип ....... Имя ................................. Значение
Локальная ...... SOME_VARIABLE_NO1 .... OTHER_VAL1
Локальная ...... SOME_VARIABLE_NO2 .... OTHER_VAL2
Локальная ...... SOME_VARIABLE_NO3 .... OTHER_VAL3
> Локальный ...... PARM1 ....................... SOME_VARIABLE_NO1
Локальный ..... .PARM2 ....................... SOME_VARIABLE_NO2
Локальный ...... PARM3 ..... .......................... SOME_VARIABLE_NO3

Локальный означает, что область действия переменной ограничена этим одним заданием/скриптом (вы можете использовать разные области, вплоть до глобальной).

Значения %%PARM1, %%PARM2 и т. д. будут отражены в $1, $2 и т. д.

У BMC есть этот видеогид на их канале -

https://www.youtube.com/watch?v=nPKbOh8tUNU

здесь тоже есть хороший гайд -

https://communities.bmc.com/message/832637#832637

person Mark    schedule 04.09.2020
comment
Привет! Благодарю за ваш ответ! К сожалению, моя проблема немного отличается - я хочу назначить переменную Control-m на основе значения из сценария - в моем конкретном случае я хочу назначить PID сценария в переменную, чтобы я мог убить процесс, если мне нужно. - person someName; 08.09.2020
comment
В powershell команда write-host может присвоить значение переменной сразу после выполнения этой строки. В bash весь скрипт должен выполняться до того, как значение переменной будет присвоено. Я ищу решение, которое позволяет control-m назначать переменную в bash, как это работает в powershell - после выполнения определенной строки - person someName; 08.09.2020
comment
В этом случае вы можете просто использовать утилиту ctmvar для установки переменной Control-M - ctmvar -action SET -var var -varexpr var_value - person Mark; 09.09.2020