Джасепт не может прочитать буквальный амперсанд на windows? - PullRequest
1 голос
/ 19 апреля 2020

Команда ниже:

C:\users\xxx\jasypt-1.9.3\bin> ./encrypt.bat password=password input=test.com/test?v=v&w=w

Жалуется на вопросительный знак ("&") не допускается. Поэтому я попытался экранировать его как "&" или ^&, но Jasypt, похоже, лишил & и что следует за ним.

C:\users\xxx\jasypt-1.9.3\bin> ./encrypt.bat password=password input=test.com/test?v=v^&w=w
...
----ARGUMENTS-------------------
input: test.com/test?v=v
password: password
...
'w' is not recognized as an internal or external command,
operable program or batch file.

Как бы я сделал так, чтобы Jasypt читал его как буквальный амперсанд или это windows вещь?

1 Ответ

1 голос
/ 19 апреля 2020

Экранирующий символ PowerShell - ` (обратный тик), а не ^, который указывает c на cmd.exe.

Однако без кавычек & является метасимволом (символ со специальным значением syntacti c) в обеих оболочках.

Следовательно, , чтобы гарантировать, что PowerShell передает & через ./encrypt.bat как есть, все следующие варианты работают (поскольку ваш аргумент не содержит ссылок на переменные PowerShell ($...), "..." (расширяемый ( (интерполирующая) строка) и '...' (буквальная строка) могут использоваться взаимозаменяемо):

./encrypt.bat password=password input=test.com/test?v=v`&w=w
./encrypt.bat password=password input=test.com/test?v=v"&"w=w
./encrypt.bat password=password input=test.com/test?v=v'&'w=w
./encrypt.bat password=password "input=test.com/test?v=v&w=w"
./encrypt.bat password=password 'input=test.com/test?v=v&w=w'

Поскольку вы говорите, что ./encryp.bat подал жалобу , подразумевается, что ./encrypt.bat плохо реализован и не использует "..." для дальнейшей обработки аргументов, которые он получает , в результате чего cmd.exe метасимволы, такие как &, прерывают обработку.

Чтобы противостоять этому, вы должны дополнительно предвидеть побег cmd.exe урожденной ds и включите литерал ^ в аргумент, передаваемый из PowerShell:

./encrypt.bat password=password 'input=test.com/test?v=v^&w=w'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...