Смена пароля кошелька с помощью двойных кавычек оказалась загадочной (Qtum Core)

Я установил ядро ​​​​Qtum на свой сервер Ubuntu 16.04, создал свой кошелек и зашифровал его.

Для проверки я изменил пароль с помощью команды, как показано ниже.

Я набрал команду ниже, чтобы изменить свой пароль.

./qtum-cli walletpassphrasechange "старая парольная фраза" "новая парольная фраза"

Допустим, моя старая парольная фраза является тестовой, а моя новая парольная фраза — тестовой.

Обратите внимание, что я ставлю двойные кавычки сразу после слова test.

./qtum-cli walletpassphrasechange "тест" "тест""

Это возвращает строку ниже, которая просит меня закрыть двойную кавычку.

>

Поэтому я набрал ", чтобы закрыть его.

Удивительно, но командная строка прошла!

Я думал новый пароль будет "тест" или "тест""

Но они оба не работают.

Кто-нибудь может предположить, каким может быть новый пароль?

Ответы (1)

Это действительно вопрос Баша, но я укушу.

Bash (или любая оболочка UNIX) будет рассматривать "символы как начало и конец литерала. Внутри ""разрешены пробелы и специальные символы, которые в противном случае имели бы особое значение.

Одним из разрешенных специальных символов внутри является новая строка. Это именно то, что здесь происходит. Ваш "test""плюс "на следующей строке рассматривается как "test"плюс новой строки между кавычками. В результате ваш новый пароль будет testплюс символ новой строки.

Если вы хотите test"в качестве пароля, одним из способов было бы использовать одинарные кавычки вместо двойных кавычек. Одним из символов, разрешенных внутри одинарных кавычек, является... символ двойной кавычки.

Таким образом, вы могли бы использовать

walletpassphrasechange 'test' 'test"'
./qtum-cli walletpassphrasechange "тест" "тест"" > ". Если эта команда прошла, как вы думаете, каким может быть новый пароль? Как вы упомянули, тест плюс символ новой строки не работает. До сих пор я пробовал тест, тест "", тест\n, тест "\n". Все они не работают.
Попробуйте $'test\n'. $ впереди говорит оболочке интерпретировать последовательности, подобные \n, а не воспринимать их буквально.
Я попробую это и дам вам знать, правильно это или нет.
ух ты! $'test\n'работа! большое спасибо!
Не могли бы вы подробнее рассказать о том, как это изменить на $'test\n'? Я действительно не понимаю..... "test""плюс новая строка "становится $'test\n'Теперь я знаю, что знак $ говорит оболочке интерпретировать последовательности, такие как \n, но как эта двойная кавычка "изменилась на одинарную кавычку ', и она расположена прямо перед слово test?
Если я наберу test"плюс новую строку "(не "test""), то каким будет новый пароль?