실행된 명령에서 오류 메시지를 캡처하는 방법은 무엇입니까?

실행된 명령에서 오류 메시지를 캡처하는 방법은 무엇입니까?

저는 자동화된 서버 강화 스크립트를 작성하는 임무를 맡았는데, 그들에게 필요한 것 중 하나는 실행된 각 명령의 모든 출력에 대한 보고서였습니다. 오류 메시지를 문자열로 저장하고 텍스트 파일에 추가하고 싶습니다.

다음 명령을 실행한다고 가정해 보겠습니다.

/sbin/modprobe -n -v hfsplus

내 컴퓨터에서 이것을 실행하면 결과는 다음과 같습니다.

FATAL: Module hfsplus not found

이 오류 메시지를 문자열로 어떻게 저장할 수 있나요? 어떤 도움이라도 대단히 감사하겠습니다. 감사해요!

답변1

오류 명령을 리디렉션하여 이를 수행할 수 있습니다.

/sbin/modprobe -n -v hfsplus 2> fileName 

스크립트로

#!/bin/bash
errormessage=$( /sbin/modprobe -n -v hfsplus 2>&1)
echo $errormessage

또는

 #!/bin/bash
errormessage=`/sbin/modprobe -n -v hfsplus 2>&1 `
echo $errormessage

오류를 추가하려면 >>대신 사용하십시오.>

"예기치 않은 토큰 '&' 근처 구문 오류" 오류를 방지하려면 2>&1대신 사용하세요 .2> &1

답변2

bash 스크립트에 문자열로 저장하기만 하면 됩니다.

X=`/sbin/modprobe -n -v hfsplus 2>&1`
echo $X

명령을 실행할 때 메시지가 표시되므로 조금 더 나을 수 있습니다.

TMP=$(mktemp)
/sbin/modprobe -n -v hfsplus 2>&1 | tee $TMP
OUTPUT=$(cat $TMP)
echo $OUTPUT
rm $TMP

답변3

변수에 오류 메시지를 반환하는 것은 쉽습니다.

error=$(/sbin/modprobe -n -v hfsplus 2>&1 1>/dev/null)

echo $error

답변4

파일에 추가하려면 다음을 사용하십시오./sbin/modprobe -n -v hfsplus 2>> filename

관련 정보