Полностью новичку вопрос простой PowerShell Я пытаюсь сделать следующее - для каждого файла * .sql в текущем периоде каталогаКак использовать символ @ в powershell?
sqlplus username/[email protected]_identifier_specified_in_argument @file_name
Вот то, что я до сих пор:
$scripts = dir *.sql
foreach($script in $scripts) {
write-host sqlplus username/password"@"$args "@"$script.Name
}
(Я знаю, что write-host выводит его на экран, я просто пытаюсь отлаживать его сейчас)
Однако есть что-то напуганное, как powershell обрабатывает символ @, и когда я запускаю это, я всегда получаю что-то li ke
PS C:\code\scripts> C:\utils\run_sql_scripts_on.ps1 identifier
sqlplus username/[email protected] @ ALERTS.sql
Посмотрите, что пробел после "@"? Что дает?
Что делать 'и @ символы на самом деле делать? –
Backtick - это символ escape в PowerShell. @ Можно использовать в PS для создания пустых массивов, например $ a = @(). В этом случае я не думаю, что проблема была @, а скорее двойные кавычки. Замените букву @ буквой, и вы все равно увидите дополнительное пространство. Я думаю, что Write-Host автоматически помещает пробел после строки с двумя кавычками. – aphoria
Проблема в том, что PowerShell видел «@» и $ script.home как два отдельных аргумента, потому что второй - это выражение, а Write-Host объединяет все аргументы с пробелом. – JasonMArcher