Это не очень элегантно, но это настолько просто, насколько я смог придумать:
uniq -c input | awk '{if ($1 % 2 == 1) { print substr($0, 9) }}'
Substr() просто обрезает вывод uniq
. Это будет работать, пока у вас не будет более 9 999 999 дубликатов строки (в этом случае вывод uniq может растянуться на 9 символов).
Подход, который вы показываете выше, будет улавливать выходные данные подкоманды, т. Е. $ (...)
в вашу переменную $ bar_foo
. При использовании openssl
вы можете указать пароль с помощью переключателя -in
или -stdin
.
$ myvar=$(openssl passwd -1 -salt "foobar" -stdin <<< "blah")
$ echo $myvar
$1$foobar$1ips4/cyJvjUjCj8w4exx0
Обычно рекомендуется поместить пароль в файл, а затем вызвать openssl
, так как это убережет его от вашей истории и защитит его от слишком открытого раскрытия.
OP в конечном итоге использовал этот метод, чтобы запросить у пользователя пароль, используя read
и затем сохранив его в переменной pass1
.
$ read -p "Password: " -s pass1
Затем эту переменную можно использовать в качестве входных данных для команды openssl
.
$ myvar=$(openssl passwd -1 -salt "foobar" -stdin <<< "$pass1")
$ echo $myvar
$1$foobar$1ips4/cyJvjUjCj8w4exx0