Bash - Перехват ввода для заменяемой команды, хранящейся в переменной

Это не очень элегантно, но это настолько просто, насколько я смог придумать:

uniq -c input | awk '{if ($1 % 2 == 1) { print substr($0, 9) }}'

Substr() просто обрезает вывод uniq. Это будет работать, пока у вас не будет более 9 999 999 дубликатов строки (в этом случае вывод uniq может растянуться на 9 символов).

1
11.06.2020, 15:04
1 ответ

Подход, который вы показываете выше, будет улавливать выходные данные подкоманды, т. Е. $ (...) в вашу переменную $ bar_foo . При использовании openssl вы можете указать пароль с помощью переключателя -in или -stdin .

Пример

$ myvar=$(openssl passwd -1 -salt "foobar" -stdin <<< "blah")
$ echo $myvar
$1$foobar$1ips4/cyJvjUjCj8w4exx0

Обычно рекомендуется поместить пароль в файл, а затем вызвать openssl , так как это убережет его от вашей истории и защитит его от слишком открытого раскрытия.

ОБНОВЛЕНИЕ # 1

OP в конечном итоге использовал этот метод, чтобы запросить у пользователя пароль, используя read и затем сохранив его в переменной pass1 .

$ read -p "Password: " -s pass1

Затем эту переменную можно использовать в качестве входных данных для команды openssl .

$ myvar=$(openssl passwd -1 -salt "foobar" -stdin <<< "$pass1")
$ echo $myvar
$1$foobar$1ips4/cyJvjUjCj8w4exx0
1
29.04.2021, 00:16

Теги

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