stdin을 사용할 때 명령의 반환 값은 무엇입니까?

stdin을 사용할 때 명령의 반환 값은 무엇입니까?

이미징 다음 명령을 실행하고 있습니다.

echo "root:mypass" | chpasswd

chpasswd에서 반환된 반환 코드/오류 코드를 얻는 방법은 무엇입니까? 이 경우에 이것이 가능합니까? 나는 노력했다

RET = `echo "root:mypass" | chpasswd`

하지만 이것은 단지 "명령을 찾을 수 없음"을 제공합니까?

답변1

달러? 변수는 마지막 명령의 반환 값을 보유합니다. 다음을 수행할 수 있습니다.

echo "root:passwd" | chpasswd
RET=$?

또는 직접 테스트하세요.

echo "root:passwd" | chpasswd
if [ "$?" -ne 0 ]; then
  echo "Failed"
fi

답변2

반환 값이 중요하지 않고 단지 성공 또는 실패일 경우 명령문에서 다음 명령을 사용할 수 있습니다 if.

if ! echo "root:mypass" | chpasswd; then
  # chpasswd failed
fi

또는 더 짧은 것:

echo "root:mypass" | chpasswd || cmd_to_run_if_chpasswd_failed

답변3

제가 올바르게 이해했다면 귀하는 추가 프로세스 확인 없이 명령문만 사용하고 Enter 키를 눌러 루트 사용자의 비밀번호를 변경하려고 시도하고 있는 것입니다.

"sudo su" 접두사를 추가하면 명령문이 제대로 작동하는 것으로 나타났습니다.

~$ sudo su

루트 사용자의 비밀번호를 변경하려는 경우 루트 사용자 이름이 무엇인지 알고 올바르게 로그인해야 합니다. 당신은 그것을 사용할 수 있습니다수도수주문하다.

그런 다음 "root"를 현재 루트 사용자 이름으로 바꾸고 "my pass"를 해당 사용자에 대해 원하는 비밀번호로 바꾸는 다음 명령을 실행하면 충분합니다(이 방법을 시도할 때 이 점을 기록해 두십시오).

~$ echo "root:mypass" | chpasswd

입력을 조사한 후출구명령과로그인새로운 비밀번호를 사용하라는 명령입니다.

관련 정보