나는 Unix 명령의 출력을 캡처하려면 다음과 같은 것을 사용해야 한다는 것을 배웠습니다.
RESULT=$(command in question)
fsarchiver
RESULT
이전 옵션이 더 이상 사용 -z
되지 않으므로 변수 버전을 캡처하고 싶습니다 fsarchiver
. -Z
버전 0.8.4(Ubuntu 18.04 LTS에서 사용되는 버전)를 사용해야 합니다 . 내 스크립트에 올바른 압축 수준을 적용하려면 fsarchiver
.
그래서 나는 이것을 시도했습니다 :
$ RESULT=$(fsarchiver --version)
fsarchiver 0.6.22 (2016-02-13)
$ echo "${RESULT}"
$
그래서 이것은 단지 빈 줄을 반환합니다. 하지만 이 방법의 버전을 식별할 수 있으므로 ls
명령 출력을 bash 스크립트의 변수로 캡처하는 것을 완전히 오해하지는 않을 것이라고 확신합니다.
$ RESULT=$(ls --version)
$ echo "${RESULT}"
ls (GNU coreutils) 8.25
Copyright © 2016 Free Software Foundation, Inc.
Lizenz GPLv3+: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html>
Dies ist freie Software: Sie können sie ändern und weitergeben.
Es gibt keinerlei Garantien, soweit wie es das Gesetz erlaubt.
Geschrieben von Richard M. Stallman und David MacKenzie.
$
버전을 요청할 때 결과 캡처 측면에서 동작 ls
과 동작이 다른 이유는 무엇입니까?fsarchiver
답변1
fsarchiver
버전 정보를 표준 오류 및 ls
표준 출력에 기록합니다. 어느 것이 옳은지는 논쟁의 여지가 있습니다. 바라보다진행 보고서/로그 정보가 stderr 또는 stdout에 속합니까?관련된 토론을 해보세요. ls
귀하의 경우에는 아마도 GNU 버전과 GNU 코딩 표준버전 정보를 표준 출력에 강제로 기록.
캡처 버전을 사용할 수 있습니다
RESULT=$(fsarchiver --version 2>&1)