변수에 저장된 바꾸기 명령의 입력을 어떻게 캡처할 수 있나요?
예:
다음 명령의 입력을 어떻게 캡처할 수 있습니까?
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