제공된 변수를 사용하거나 그렇지 않으면 파생하여 사용하십시오.

제공된 변수를 사용하거나 그렇지 않으면 파생하여 사용하십시오.

스크립트를 사용하여 다음을 달성하려고 시도했지만 성공하지 못했습니다.

변수 값이 제공되면 추가 단계에 사용됩니다. 그렇지 않으면 스크립트 쓰기를 파일에 실행하는 값을 내보내고 추가 단계에 사용합니다.

#!/bin/bash
if [[ -z "$VER" ]] then
echo "VER not provided; Deriving value from INT"
./get_ver.rb > VER      
endif
echo "VER=$VER" > VER

답변1

몇 가지 일반적인 관용어(모든 POSIX 셸에서, bash스크립트에서도 사용하기에 안전할 뿐만 아니라):sh

VER=${VER-$(./get_ver.rb)}

또는:

: "${VER=$(./get_ver.rb)}"

${VER-value}$VER설정된 경우 $VER(Null까지) 무엇이든 확장하고, 그렇지 않으면 value다른 것으로 확장합니다.

${VER=value}: 동일하지만 value이전에 설정되지 않은 $VER조건 에도 할당됩니다.$VER

[[ -z $VER ]]콘텐츠가 설정되어 $VER있는지가 아니라 비어 있는지 확인하는 것입니다 $VER. 설정 되었지만 $VER비어 있으면 여전히 true를 반환합니다. 설정되었는지 확인할 수 있습니다 [ -z "${VER+yes}" ](여기에서는 Korn 구성 [대신 표준 명령을 사용 [[...]]하지만 를 사용할 수도 있음 ). 또 다른 덜 분명한 방법은 .[[...]]$VER${VER+:} false

답변2

스크립트에 여러 구문 오류가 있습니다.

이것은 수정된 버전입니다.

#!/bin/bash
if [[ -z "$VER" ]]; then
  echo "VER not provided; Deriving value from INT"
  VER="$( ./get_ver.rb )"
fi
echo "VER=$VER" >VER

참고 사항 - 진술 ;thenfi끝 부분에 if.

명령의 출력을 변수에 저장하려면 $(...)위와 같이 사용하십시오.

사용주택 검사쉘 스크립트를 확인하십시오.

관련 정보