Так что у меня этот Баш скрипт для шифрования:Bash STDIN - Я теряю все символы новой строки charachters
#!/bin/bash
#encrypt.sh
fn=$1
if [ $# -eq 0 ]
then
echo "Filename required..."
fi
echo "Type text. Hit Ctrl-d when done"
keyvariable=$(cat)
echo -e $keyvariable | gpg --symmetric --cipher-algo AES256 > $fn
И у меня есть этот скрипт для дешифрования:
#!/bin/bash
#decrypt.sh
fn=$1
if [ $# -eq 0 ]
then
echo "Filename required..."
fi
cat $fn | gpg --decrypt
Пример:
sh encrypt.sh test
Type text. Hit Ctrl-d when done
hello
how
are
you
?
Я вводил пароль и подтверждаю его. Ок, отлично. Теперь у меня есть зашифрованный файл с именем «test».
Но когда я иду, чтобы расшифровать "тест", вот вывод:
sh decrypt test
gpg: AES256 encrypted data
gpg: encrypted with 1 passphrase
-e hello how are you ?
Я теряю все символы новой строки! Что делать?
Ответ довольно прост на самом деле:
echo -e "$keyvariable" | gpg --symmetric --cipher-algo AES256 > $fn
Обратите внимание на кавычки вокруг $ keyvariable.
Вот и все!
Он отлично работает с кавычками! Большое вам спасибо! – Eamorr
@Eamorr: Замечательно, что он работает с кавычками, но на самом деле последняя часть решения chepner - лучшая, где вы вообще не храните вход, и просто дайте gpg взять stdin напрямую. Подумайте об использовании. –
Эй, это решение работает в командной строке, но он не запрашивает вход в скрипт. – Eamorr