실패 시 오류가 발생하는 동안 명령 출력을 변수로 저장하는 방법은 무엇입니까?

실패 시 오류가 발생하는 동안 명령 출력을 변수로 저장하는 방법은 무엇입니까?

명령 변수를 기반으로 if 문을 실행하려고 합니다. 예를 들면 다음과 같습니다.

ssh_location=$(which ssh)

내 문제는 이것을 저장하고 싶다는 것입니다오직시스템에 존재하는 경우 추가 처리를 위해 바이너리를 사용할 수 있습니다. 그렇지 않으면 오류 문자열을 에코하고 싶습니다. 이것은 내가 운없이 시도하는 것입니다.

if ["$ssh_location"] ; then
    echo "it exists"
else 
    echo "does not exist"
fi

다음 오류 메시지가 계속 나타납니다.

./test.sh: line 6: [/usr/local/bin/ssh]: No such file or directory
does not exist

(확실히 존재합니다).

답변1

["$ssh_location"]파일이 있는지 확인하는 대신 존재하지 않는 경로를 사용하여 명령을 실행 하려고 합니다 .

파일이 존재하는지 확인하는 구문은 다음과 같습니다.

if [ -f "$ssh_location" ]

괄호 안에 공백이 없습니다(예, 필수입니다) -f. 그렇지 않은 경우 -f명령의 반환 코드를 평가합니다 ssh.

관련 정보