Как использовать символ @ в PowerShell - PullRequest
3 голосов
/ 01 мая 2009

Я пытаюсь сделать следующее - для каждого файла * .sql в текущем каталоге запустите

sqlplus username/password@connect_identifier_specified_in_argument @file_name

Вот что у меня есть:

$scripts = dir *.sql
foreach($script in $scripts) {
    Write-Host sqlplus username/password"@"$args "@"$script.Name
}

(я знаю, что Write-Host выводит его на экран; сейчас я просто пытаюсь отладить.)

Однако в том, как PowerShell обрабатывает символ @, есть что-то забавное, и когда я запускаю его, я всегда получаю что-то вроде:

PS C:\code\scripts> C:\utils\run_sql_scripts_on.ps1 identifier
sqlplus username/password@identifier @ ALERTS.sql

Видите этот пробел после "@"? Что дает?

Ответы [ 2 ]

7 голосов
/ 01 мая 2009

Выйдите из @ с помощью обратного удара (`).

Write-Host sqlplus username/password`@$args `@$script.Name
2 голосов
/ 01 мая 2009

Расширения сообщества PowerShell имеет небольшую удобную утилиту (echoargs) для устранения проблем такого рода:

5>echoargs username/password"@"$args "@"$script.Name
Arg 0 is <username/password@>
Arg 1 is <@>
Arg 2 is <test.txt>

Попробуйте убежать с обратной чертой:

6>echoargs "username/password`@$args" "`@$($script.Name)"
Arg 0 is <username/password@>
Arg 1 is <@test.txt>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...