#linux #powershell #shell
#linux #powershell #оболочка
Вопрос:
У нас есть файл с именем test, который будет содержать следующие данные.
export username=ganesh
export dept =hr
export job =developer
Мне нужно запустить этот файл из PowerShell, чтобы инициализировать эту переменную.
Я попробовал приведенный ниже код в Linux, и он работает, но в командной строке PowerShell он не работает.
. /data/abcd/test>/dev/null 2>amp;1
Примечание: /data/abcd — это папка
Как я могу добиться этого с помощью PowerShell?
Комментарии:
1. AFAIK, PowerShell не существует в Linux, в котором есть GNU bash
2. Привет, мы установили powershell в Linux, и он работает. мы можем использовать его с помощью команды pwsh
3. Basile, вы уже несколько лет можете установить PowerShell Core на WIn / OSX / Linux. На самом деле, использование PowerShell Core в Linux выше, чем в Windows. Ресурсы: ядро powershell загрузить linux
4. Для запуска ваш файл должен иметь расширение .ps1. При рассмотрении различий в синтаксисе языка попробуйте использовать эту шпаргалку в качестве отправной точки. Краткий справочник по BASH и PowerShell
Ответ №1:
Экспорт — это синтаксис оболочки, но не синтаксис Powershell, поэтому вы не можете создать исходный файл непосредственно в Powershell. У вас есть два варианта:
[1] Измените имя файла на что-то вроде «env-file.ps1» и измените содержимое на то, что Powershell может понять:
$Env:username = "ganesh"
$Env:dept = "hr"
$Env:job = "developer"
Затем вы можете создать исходный файл и использовать переменные:
. ./env-file.ps1
$Env:job
developer
Или [2] Вы можете прочитать файл как есть, динамически преобразовать строку в синтаксис Powershell, а затем выполнить оценку строки с помощью Invoke-Expression
:
foreach ($line in get-content env-file.env) {
if ($line -match "(?ix)^ s* export s ([^=] ) s* = s* ([^=] )$") {
$cmd = '$Env' ":" $matches[1] "=" '"' $matches[2] '"'
Invoke-Expression($cmd)
}
}
После этого вы можете использовать переменные:
$Env:username
$Env:dept
$Env:job
Другими словами, приведенный выше код служит в качестве сложного source
файла переменных среды экспорта в Unix.