svn info
추가 처리를 위해 명령의 출력(보다 정확하게는 개정 번호)을 변수에 저장하고 싶습니다 . 단지 저장 공간이 필요할 뿐입니다 4
.
$ svn info
[...]
Revision: 4
[...]
답변1
awk를 사용하세요
awk는 이에 대해 훌륭하게 작동합니다.
rev=$(svn info | awk '/Revision:/{print $2}')
위의 코드는명령 대체, $(...)
는 명령의 출력을 캡처하여 변수에 할당합니다.
위 코드에서 awk는 출력을 읽고 svn info
문자열이 포함된 줄을 기다립니다 Revision:
. 행이 발견되면 행의 두 번째 필드(개정 번호)를 인쇄합니다.
sed 사용
sed를 사용하여 이 작업을 수행할 수도 있습니다.
rev=$(svn info | sed -n '/Revision:/ s/.* //p')
이 -n
옵션을 사용하면 sed는 명시적으로 요청할 때만 인쇄합니다. /Revision:/
문자열이 포함된 행을 선택합니다 Revision:
. 이러한 줄의 경우 바꾸기 명령을 실행하고 줄의 마지막 공백까지 모든 문자를 제거한 다음 이 p
옵션에 따라 줄을 인쇄합니다.
쉘을 사용하다
while read -r name value
do
[ "$name" = Revision: ] && var="$value"
done < <(svn info)
위에서 리디렉션이 사용되었습니다.프로세스 교체, , 는 while 루프에 < <(...)
대한 출력을 제공합니다 . svn info
루프가 반복될 때마다 줄의 첫 번째 단어가 에 할당되고 name
나머지 줄은 에 할당됩니다 value
. 그렇다면 쉘 변수는 name
개정 번호인 에 할당됩니다 .Revision:
var
value
전부는 아니지만 많은 쉘이 프로세스 대체를 지원합니다. 위에서 언급한 것처럼 리디렉션이 프로세스 교체와 결합되면 둘 사이의 공간이 <
중요합니다.