배시 (및 기타 posix 호환 쉘로) 를 할 수 있는 세 가지 변수로 다음과 같은 뜻이 있다.
해제할
빈 문자열을 설정되었습니다
문자열 세트를 없음
대부분의 시간을 다운로드되었는지 됩니다 하지만 가끔 비어 있지 않은 한 세트를 가변입니다 문자열이어야 it& # 39 의 중요한 설정되었습니다 해제할 구별할 수 있으며 빈 구체화하십시오.
다음 예제일 얼마나 다양한 가능성을 높이고, 또는 기타 posix 호환 쉘로 작동하잖아 bash 테스트할 수 있습니다.
if [ -z "${VAR}" ]; then
echo "VAR is unset or set to the empty string"
fi
if [ -z "${VAR+set}" ]; then
echo "VAR is unset"
fi
if [ -z "${VAR-unset}" ]; then
echo "VAR is set to the empty string"
fi
if [ -n "${VAR}" ]; then
echo "VAR is set to a non-empty string"
fi
if [ -n "${VAR+set}" ]; then
echo "VAR is set, possibly to the empty string"
fi
if [ -n "${VAR-unset}" ]; then
echo "VAR is either unset or set to a non-empty string"
fi
$ {} '이' 수 '가 빈 문자열을 VAR+foo chunghwa 확장됨 경우' VAR 를 foo "만약 'var' 로 설정되었습니다 설정해제하거나 '모든 것 (빈 문자열을 포함).
$ {} '이' var 푸 chunghwa 확장됨 값에 대한 'var "만약 집합 (set 를 포함한 빈 문자열)' 와 'foo 해제할 경우. 이 제공하는 사용자 무시가능한 설정값으로 유용하게 사용할 수 있다 (예를 들면, '$ {붉은 색}' 있다고 말한 '레드' 변수 '컬러' 를 사용하지 않는 한 설정되었습니다 뭔가).
이유는 ' [x", $ {} " VAR. = x] '는 종종 빈 문자열은 테스트를 위해 권장됨 서버인지에 가변입니다 설정해제하거나 인컨텍스트 설정되었습니다 때문에 일부 구축' ['명령 (소트트웨어용' test ') 가 갈레라 컴퍼니. 만약 'VAR' like '무언가를 설정되었습니다 잘못된 행동을 할 때 그 때 몇몇 구현들은 -n', ' [", $ {} " VAR. = " "; 첫 번째 인수를] '때문에' ['가 아닌' 잘못 '-n 연산자입니다 문자열으로 것으로 풀이된다.
39 를 've seen, 대체 I& [- z $ foo" "; 그러나] '는 왜 사람들이 이 방법을 사용하여, 다음과 같은 I& # 39 m not 잘 아는 사람?
[ "x${foo}" = "x" ]
어쨌든 you& com/go/4e6b330a_kr 해제할 경우 # 39, re 금지 (통칭 '또는' 에서 '세트 - u - o 설정되었습니다 노운세트') 로, 그 후, # 39 you& ll 실행하십시오 모두 문제 삼고 있다. # 39 의 간단한 수리입니다 there& 이:
이 질문 있는지 확인하는 방법을 묻는 질문에 대한 답변을 한 것에 대해서, 그리고 최고의 이미 빈 문자열을 가변입니다 that.< br>;
하지만 난 후에 이곳에 상륙한 지 미리 프로그래밍 동안 내가 실제로 검색: 모함이야 확인란 같은 빈 함수, 배시 shell.< br> 작업할 미리 ,
내가 읽은 후 답변을 하고 있지만, 어쨌든 그 순간 않은 걸 제대로 bash 등의 기능이 있는 제품을 내 빈 php, 배시 code.< br> 수로 있었을 것이다.
내 생각엔 이 일어날 수 있는 등 다른 기능을 변환하십시오 결심했다고 bash< br>, php, 빈
< br>;
[Php 수작업식] [1] 에 따르면 :< br>;
변수 고려되는지 doesn& 타임코드가 있거나, 그 값은 빈 경우 t # 39 의 경우 한 following:*< br>;
< ul>;
< li> " ";;; (빈 문자열) < /li>;
(0 값을 정수로), /li> < < li> 0;;
(0 을 부동 소수점), /li> < < li> 0.0;;;
< li> " 0";;; (0 을 문자열으로) < /li>;
빈 array< /li> li> <;;;
변수 선언 없이 value< /li> li> <;;;
< /ul>;
및 거짓값 건 당연하지 nulll bash 도왔으매 그들은 생략됨 변환할 수 없습니다.
function empty
{
local var="$1"
# Return true if:
# 1. var is a null string ("" as empty string)
# 2. a non set variable is passed
# 3. a declared variable or array but without a value is passed
# 4. an empty array is passed
if test -z "$var"
then
[[ $( echo "1" ) ]]
return
# Return true if var is zero (0 as an integer or "0" as a string)
elif [ "$var" == 0 2> /dev/null ]
then
[[ $( echo "1" ) ]]
return
# Return true if var is 0.0 (0 as a float)
elif [ "$var" == 0.0 2> /dev/null ]
then
[[ $( echo "1" ) ]]
return
fi
[[ $( echo "" ) ]]
}
< br> < br>;;;
사용 예제:
if empty "${var}"
then
echo "empty"
else
echo "not empty"
fi
< br> < br>;;;
Demo:< br>;
다음 스니핏:
#!/bin/bash
vars=(
""
0
0.0
"0"
1
"string"
" "
)
for (( i=0; i
하지만 이 기법을 통해 정확한 답을 실행했음 아닙니다. # 39 의 경우, re 찾는 구체화하십시오 you& 않했노라 " 매핑되며, command". 실제로 env 명령의 에 저장할 수 있습니다. 가변으로 후 실행할 때마다 이를 위해 필요한 경우 기술서임을 관심용 브래킷에 없습니다!
예를 들어, 만약 이 명령을 결정하는 you& # 39, re debian:
'그렙 데비안 / proc / 버전인'
전체 예:
IS_DEBIAN="grep -i debian /proc/version"
if $IS_DEBIAN; then
echo 'yes debian'
else
echo 'non debian'
fi
그래서 이건 마치 간접적인 방식이 (때마다 이를 실행) 을 확인할지 빈 문자열 (이것은 확인하고 있을 오류 응답을 명령을 있지만, 이는 또한 변화가 발생합니까 복귀할 것으로 빈 문자열).
이 경우 설정해제하거나 설정되었습니다 반환되므로 flashcopy 가변입니다 빈 문자열 (" ";).
39 를 않을 때, 포탄 때문에 어려움을 겪고 있는 you& bash, re 포터블식 don& # 39, t 지원 it, 항상 이중 브래킷에서 사용하여 구문.
다음 중 하나:
39, t, bash 연산뿐 사용하여 대괄호의 견적 aren& 필요하다. 은 변수의 값을 포함할 수 있는 테스트 간소화할 수 있습니다.
이 구문은 호환됩니까 ksh (최소한 ksh93 어쨌든). 본 셸 같은 POSIX 순결케 작업하십시오 않는 이상 sh 또는 대시입니다.
참조 제 대답은 here 및 BashFAQ/031 의 차이점에 대한 자세한 내용은 연산뿐 및 단일 대괄호의.
테스트하려면 가변입니다 해제할 경우 특별히 볼 수 있습니다 () 로 구분되어 빈 문자열):
여기서 " x"; 가 임의의.
궁금해할까봐 서버인지에 가변입니다 nulll 해제할 수는 없습니다.
배시 (및 기타 posix 호환 쉘로) 를 할 수 있는 세 가지 변수로 다음과 같은 뜻이 있다.
대부분의 시간을 다운로드되었는지 됩니다 하지만 가끔 비어 있지 않은 한 세트를 가변입니다 문자열이어야 it& # 39 의 중요한 설정되었습니다 해제할 구별할 수 있으며 빈 구체화하십시오.
다음 예제일 얼마나 다양한 가능성을 높이고, 또는 기타 posix 호환 쉘로 작동하잖아 bash 테스트할 수 있습니다.
그러나 이 같은 일이 되어 표 양식:
<! - 언어: > 랑 없음 -;
$ {} '이' 수 '가 빈 문자열을 VAR+foo chunghwa 확장됨 경우' VAR 를 foo "만약 'var' 로 설정되었습니다 설정해제하거나 '모든 것 (빈 문자열을 포함).
$ {} '이' var 푸 chunghwa 확장됨 값에 대한 'var "만약 집합 (set 를 포함한 빈 문자열)' 와 'foo 해제할 경우. 이 제공하는 사용자 무시가능한 설정값으로 유용하게 사용할 수 있다 (예를 들면, '$ {붉은 색}' 있다고 말한 '레드' 변수 '컬러' 를 사용하지 않는 한 설정되었습니다 뭔가).
이유는 ' [x", $ {} " VAR. = x] '는 종종 빈 문자열은 테스트를 위해 권장됨 서버인지에 가변입니다 설정해제하거나 인컨텍스트 설정되었습니다 때문에 일부 구축' ['명령 (소트트웨어용' test ') 가 갈레라 컴퍼니. 만약 'VAR' like '무언가를 설정되었습니다 잘못된 행동을 할 때 그 때 몇몇 구현들은 -n', ' [", $ {} " VAR. = " "; 첫 번째 인수를] '때문에' ['가 아닌' 잘못 '-n 연산자입니다 문자열으로 것으로 풀이된다.
'은' z 최선이다.
39 I& 다른 옵션을 설정할 수 있지만, ve 변수를 사용하는 것은 또 다른 변수가 eg 무시될 수 있다.
'빈' $ MY_PORT 경우 "항구" 라는 질문을 되돌려줍니다 가변입니다 관심용 설정되었습니다 5432, 그렇지 않으면 포트 설정되었습니다 my_port 값에 대한 ''. 구문 포함시키십시오 기록하십시오 콜론과 대시입니다.
39 건의 빈 설정되었습니다 대對 해제할 경우, re 관심이 you& 구분하는 상태, 봐요 - u 옵션을 내주었다.
39 를 've seen, 대체 I& [- z $ foo" "; 그러나] '는 왜 사람들이 이 방법을 사용하여, 다음과 같은 I& # 39 m not 잘 아는 사람?
어쨌든 you& com/go/4e6b330a_kr 해제할 경우 # 39, re 금지 (통칭 '또는' 에서 '세트 - u - o 설정되었습니다 노운세트') 로, 그 후, # 39 you& ll 실행하십시오 모두 문제 삼고 있다. # 39 의 간단한 수리입니다 there& 이:
참고: 이렇게 하면 leave your 가변으로 우네프.
이 질문 있는지 확인하는 방법을 묻는 질문에 대한 답변을 한 것에 대해서, 그리고 최고의 이미 빈 문자열을 가변입니다 that.< br>; 하지만 난 후에 이곳에 상륙한 지 미리 프로그래밍 동안 내가 실제로 검색: 모함이야 확인란 같은 빈 함수, 배시 shell.< br> 작업할 미리 , 내가 읽은 후 답변을 하고 있지만, 어쨌든 그 순간 않은 걸 제대로 bash 등의 기능이 있는 제품을 내 빈 php, 배시 code.< br> 수로 있었을 것이다. 내 생각엔 이 일어날 수 있는 등 다른 기능을 변환하십시오 결심했다고 bash< br>, php, 빈 < br>; [Php 수작업식] [1] 에 따르면 :< br>;
< br> < br>;;; 사용 예제:
< br> < br>;;; Demo:< br>; 다음 스니핏:
전체 경우-다음 및 - z 필요하지 않습니다. < pre>; [" $ foo"; ] & &; 에코 " empty", foo 아니다. [" $ foo"; ], 에코 " foo 가 랑하니 empty". < /pre>;
제 5 센트. 또한 보다 더 짧은 구문을. ', "만약 이 번호요:
이 노선은 값을 정할 경우 인수를 통해 줄 번호 앞에 붙인 것으로, 그동안 공급 인쇄 오류 메시지가 스크립트입니다 오류가 있는 경우 (종료시킵니다 것으로, 스크립트 실행).
또 다른 예를 찾아볼 수 있다. abs 안내선 (& # # 187 uxfs 10-7& 검색하겠습니다 171;;).
개인적으로 더 많은 선택해제합니다 포지셔닝하십시오 확인 방법을:
정확히 언제 FOO $ 및 빈 설정되었습니다 마찬가지입니다.
& # 39 의 mcds 오넬리너 alphastor duffbeer703
하지만 이 기법을 통해 정확한 답을 실행했음 아닙니다. # 39 의 경우, re 찾는 구체화하십시오 you& 않했노라 " 매핑되며, command". 실제로 env 명령의 에 저장할 수 있습니다. 가변으로 후 실행할 때마다 이를 위해 필요한 경우 기술서임을 관심용 브래킷에 없습니다!
예를 들어, 만약 이 명령을 결정하는 you& # 39, re debian:
'그렙 데비안 / proc / 버전인'
전체 예:
그래서 이건 마치 간접적인 방식이 (때마다 이를 실행) 을 확인할지 빈 문자열 (이것은 확인하고 있을 오류 응답을 명령을 있지만, 이는 또한 변화가 발생합니까 복귀할 것으로 빈 문자열).