Bash - 捕获存储在变量中的替换命令的输入

Bash - 捕获存储在变量中的替换命令的输入

我如何才能捕获存储在变量中的替换命令的输入?

例子:

我如何才能捕获以下命令的输入?

bar_foo=$(openssl passwd -1 -salt "foobar")

答案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

相关内容