파일의 해시를 비교하는 명령을 작성하고 싶었습니다. 아래 한 줄 명령을 작성했습니다. 파이프에서 이전 명령의 출력을 현재 명령의 변수로 가져 오는 방법에 대해 알고 싶었습니다.
예 : 아래 명령은 "Calculated hash"첫 번째 명령의 출력을 원래 해시와 비교하고 싶었습니다. 마지막 명령에서 이전 명령의 출력을 참조하고 싶었습니다. if 문에서 어떻게하나요? (대신 $0
)
sha256sum abc.txt | awk '{print $1}' | if [ "$0" = "8237491082roieuwr0r9812734iur" ]; then
echo "match"
fi
좁은 요청에 따라 다음과 같이 보입니다.
sha256sum abc.txt |
awk '{print $1}' |
if [ "$(cat)" = "8237491082roieuwr0r9812734iur" ]; then echo "match"; fi
... cat
인수없이 명령의 stdin을 읽고 파이프 라인에서 이전 단계에서 생성 된 콘텐츠가 후속 단계로 스트리밍됩니다.
번갈아:
sha256sum abc.txt |
awk '{print $1}' |
if read -r line && [ "$line" = "8237491082roieuwr0r9812734iur" ]; then echo "match"; fi
... 여기서 우리 read
는 stdin에서 cat
. (대신 stdin에 주어진 모든 줄을 반복하려면 BashFAQ # 1 참조 ).
그러나 대신 다음과 같이 작성하는 것이 좋습니다.
if [ "$(sha256sum abc.txt | awk '{print $1}')" = "8237491082roieuwr0r9812734iur" ]; then
echo "match"
fi
... 이는 당신 때문에 무엇보다도, 파이프 라인 밖에서 논리를 유지 if
문은 변수를 설정할 수 있습니다 유지 파이프 라인 종료 후 설정을. 파이프 라인에서 코드 실행에 내재 된 문제에 대한 자세한 내용 은 BashFAQ # 24 를 참조하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다