스크립트를 사용하여 다음을 달성하려고 시도했지만 성공하지 못했습니다.
변수 값이 제공되면 추가 단계에 사용됩니다. 그렇지 않으면 스크립트 쓰기를 파일에 실행하는 값을 내보내고 추가 단계에 사용합니다.
#!/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
참고 사항 - 진술 ;
앞 then
과 fi
끝 부분에 if
.
명령의 출력을 변수에 저장하려면 $(...)
위와 같이 사용하십시오.
사용주택 검사쉘 스크립트를 확인하십시오.