Передача амперсанда в PowerShell от R - PullRequest
0 голосов
/ 01 июня 2018

Мне нужно передать построенную строку из R в Windows Powershell.Строка выглядит примерно так:

http://www.host.com/cgi-bin/something.pl?file=filename"&"argument=on"&"argument2=on"&"dir=directory

К сожалению, R добавляет обратную косую черту к строке выше, если я создаю ее с помощью "paste":

fname <- gsub(' ', '', gsub('\n', '',paste('http://www.host.com/cgi-bin/something.pl?
file=',filename,'"&"
argument=on"&"
argument2=on"&"
dir=',directory,'"&",
sep='')))

В R переменная fname теперь содержит следующую строку:

'http://www.host.com/cgi-bin/something.pl?file=filename\"&\"argument=on\"&\"argument2=on\"&\"dir=directory

При передаче на powershell с помощью команды

system("powershell Invoke-WebRequest 'http://www.host.com/cgi-bin/something.pl?file=filename\"&\"argument=on\"&\"argument2=on\"&\"dir=directory' -outfile C:\test.dat")

PowerShell, конечно, жалуется из-за обратной косой черты.

cat fname

печатает строку в R-оболочке так, как она должна быть передана в PowerShell (а именно без обратной косой черты):

http://www.host.com/cgi-bin/something.pl?file=test"&"argument=on"&"argument2=on"&"dir=somedir

Я думал записать команду в файл,выполнение системной команды, похожей на «sed» (например,

"powershell get-content somefile.txt | %{$_ -replace "expression","replace"}") 

, для удаления обратной косой черты в файле и передачи файла в качестве команды в PowerShell. Но у меня снова возникнут проблемы с передачей обратной косой черты »Выражение "от R до PowerShell. Есть идеи?

Воспроизводимый код:

filename <- "test"
directory <- "somedir"
fname <- gsub(' ', '', gsub('\n', '',paste('http://www.host.com/cgi-bin/something.pl?
file=',filename,'"&"
argument=on"&"
argument2=on"&"
dir=',directory,
sep='')))
system(paste('powershell Invoke-WebRequest ',fname,' -outfile C:\\Windows\\temp\\test.dat',sep=""))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...