Калькулятор ключей scrypt

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

. в интерактивной оболочке Bash вы получите что-то вроде этого

user@foo /tmp$ check_host foo
foo
foouser@foo /tmp$ 

Вывод изprintf— это здесь, просто не на отдельной строке.

Разница между echoи printfзаключается в том, что echoпечатает новую строку в конце, даже если вы этого не запрашиваете (вы можете предотвратить это в Bash, используяecho -nprintfбольше похожа на функцию printf()в C, поскольку выводит только то, что вы запрашиваете. Вам нужно будет явно использовать \nв строке формата printf, чтобы получить новую строку.

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

Так:

check_host() {
    echo "$1"
    printf "%s\n" "$1"
}
check_host "$(hostname)"

Печать произвольных данных с помощью printfтакже должна выполняться через спецификатор формата %s, как указано выше. В противном случае любые знаки %в данных интерпретировались бы как printf.

Также см.:Почему printf лучше, чем echo?

2
25.04.2019, 23:14
1 ответ

Эта реализация scryptсоответствует вашим требованиям, см.https://github.com/jkalbhenn/scrypt

scrypt-kdf [options...] password [salt N r p size salt-size]
                         string string integer integer integer integer integer]
options
  -b|--base91-input  password and salt arguments are base91 encoded
  -c|--check hash  test if hash is derived from a password
  -h|--help  display this text and exit
  -p|--crypt  use unix crypt format
  -v|--version  output version information and exit
3
27.01.2020, 22:02

Теги

Похожие вопросы