Я пытаюсь преобразовать сценарий CMD (.bat) в сценарий .sh на стороне Linux.
Я не нашел подходящей документации, например, для следующих строк
set PATH = "${PATH1}%;${PATH_NAME};"
another_script.bat -create "%LocalDestination%TEST;%LocalDestination%" -e %GenericEnvironementName% -d "%SettingsPath%/Env"
Для первого это экспорт, но я не знаю, похоже ли это на условие if?
${PATH1}=${PATH_NAME}
export PATH=$PATH1
для второго выражение
"%LocalDestination%TEST;%LocalDestination%"
это как задание? почему мы ставим %
в конце?
$LocalDestination$TEST = $LocalDestination
%GenericEnvironementName%
будет $GenericEnvironementName
%SettingsPath%/Env >>> $SettingsPath/Env?
%
, до И после. Таким образом, %VAR%
заменяется значением VAR
.set PATH = "${PATH1};${PATH_NAME};"
присваивает значения PATH1
и PATH_NAME
переменной PATH
, разделенные ;
.export PATH = "$PATH1;$PATH_NAME"
$
перед именем переменной. Так %TATA%
становится $TATA
.%SettingsPath%/Env
--> ${SettingsPath}/Env
Действительно, моя ошибка, я удалил %
. Это должно было быть прочитано set PATH = "${PATH1};${PATH_NAME};"
Всем спасибо за ответы set PATH = "${PATH1}%;${PATH_NAME};" является пакетным, он установит PATH в эту литеральную строку (минус %, поэтому мой вопрос заключается в том, что значение будет конкатенацией 2? PATH = "${PATH1};${PATH_NAME};" с точкой с запятой после каждой переменной ? Я не совсем уверен...
Да. Каждая переменная заменяется своим значением и объединяется со следующей. ;
не являются частью имен переменных, поэтому они рассматриваются как текст и объединяются с остальными. Бывший. вы можете построить такую строку: ${var1}sometext${var2}
. Результатом будет значение var1, sometext, значение var2, все объединенные (то есть «склеенные») вместе.
если
set PATH = "${PATH1}%;${PATH_NAME};"
является пакетным, он установитPATH
в эту литеральную строку (за вычетом%
, потому что их нужно удвоить, чтобы их экранировать), потому что допустим только синтаксис%variable%
(и!variable!
, но это выходит за рамки этого вопроса) .