2013-07-09 2 views
0

죄송합니다. 이것은 매우 간단하거나 이미 질문을 받았지만 질문의 성격으로 인해 검색 엔진을 사용하기 위해 검색어를 생각할 수 없습니다. 이 같은 값을 할당하는 가장 일반적인 방법에서 차이가이 구문으로 bash 변수 값을 지정할 때의 차이점은 무엇입니까?

$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue} 
$ echo "$MY_BASH_VAR" 
myvalue 

무엇 :

는 최근에 나는 그들이 이런 식으로 변수 값을 할당 일부 bash는 스크립트를 보았다

MY_BASH_VAR=myvalue 
$ echo "$MY_BASH_VAR" 
myvalue 

답변

2

당신 볼 수 있습니다 http://linux.die.net/man/1/bash

${parameter:-word} Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted. 

기본값은 다음과 같습니다. MY_BASH_VAR 그것은 기본 "myvalue"

[email protected]:~$ A=42 
[email protected]:~$ A=${A:-5} 
[email protected]:~$ echo $A 
42 
+0

': -'의 경우,'A'는 현재 빈 문자열로 설정된 경우 기본값을받습니다. – chepner

2

$MY_BASH_VAR가 이미 설정 한 가정을한다, 그렇지 않으면 정의 된 경우 그 값을 유지합니다. 이 경우 동일한 값을 유지합니다. 그렇지 않으면 myvalue이됩니다.

케이스 1) $MY_BASH_VAR이 이미 설정되어 있습니다.

$ MY_BASH_VAR="hello" 
$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue} 
$ echo "$MY_BASH_VAR" 
hello 

경우 2) $MY_BASH_VAR이 미리 설정되지 않았습니다.

$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue} 
$ echo "$MY_BASH_VAR" 
myvalue 

경우 3) $MY_BASH_VAR 빈 문자열로 설정합니다.

$ MY_BASH_VAR="" 
$ MY_BASH_VAR=${MY_BASH_VAR:-myvalue} 
$ echo "$MY_BASH_VAR" 
myvalue 
+0

': -'를 사용하면 현재 빈 문자열로 설정된 경우 MY_BASH_VAR도 기본값을받습니다. – chepner

+0

오, 그건 사실이야, 내 대답에서 언급 기억하지 않았다. 방금 업데이트했습니다. 감사! – fedorqui

관련 문제