![실패 시 오류가 발생하는 동안 명령 출력을 변수로 저장하는 방법은 무엇입니까?](https://linux55.com/image/200592/%EC%8B%A4%ED%8C%A8%20%EC%8B%9C%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94%20%EB%8F%99%EC%95%88%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%B3%80%EC%88%98%EB%A1%9C%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
명령 변수를 기반으로 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
.