我如何才能捕获存储在变量中的替换命令的输入?
例子:
我如何才能捕获以下命令的输入?
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