2014-03-13 1 views
1

스크립트 A는 B 스크립트의 모든 변수를 가져옵니다. 문제는 스크립트 B입니다. 필요한 경우 변수가 존재하는지 또는 비어 있는지 알 수 없습니다. 사례 B에 변수가 존재하지 않는다면, 스크립트 A에서 변수를 사용합니다. A에 존재하는 경우, 변수 B를 사용합니다. 또는 그것은 존재와 B는 B.변수 (일반적으로 텍스트)가 있는지 확인하는 방법 변수가 비어있는 경우 변수가 정의되어 있지 않거나 비어 있습니다.

예에서 기본 변수에 사용할 : 내 스크립트 "B"에서 변수을 댓글이 비어있는이 경우 ...

스크립트 B.sh

#!/bin/sh 
Name='<b>Variety</b>' 
Comment='<span size="xx-large">Variety changes the wallpaper on a regular interval</span>' 
Comment3='' 
License='GPLv3' 
Screenshot='http://peterlevi.com/variety/wp-content/uploads/2012/10/01-all-1024x576.jpg' 
Url='http://peterlevi.com/variety/' 
export Comment 
export Name 
export Comment3 
export License 
export Screenshot 
export Url 

스크립트 A.sh

#!/bin/sh 
. $HOME/B.sh 
Comment2='Variety changes the desktop wallpaper on a regular basis, using user-specified or automatically downloaded images.' 

echo $display_variable_comment3_or_comment2 (depending the case) 

죄송합니다. 내 영어가 잘못되었습니다 :/

답변

4

BASH에서 당신은이 작업을 수행 할 수 있습니다

다음 pvar
pvar="${s:-defaultVal}" 

$s로 설정됩니다 그것은 그렇지 않으면 defaultVal로 설정됩니다있는 경우

+1

우수! 감사! 멋지다! 스크립트 "A.sh"에서 변수 'Comment3'을 'Comment2'로 변경했습니다. 또한 내 스크립트 'A.sh'에서 pvar라는 새로운 변수를 만들었습니다. pvar = "$ {Comment2 : - $ Comment3}" – davidva

1

변수가 존재하는지 또는 값이 비어 있는지 확인해야하는지 여부에 따라 달라집니다. 비어 있는지 테스트해야하는 경우 다음을 사용할 수 있습니다.

if [ -z "$COMMENT3" ] ; then 
    COMMENT3="some comment" 
fi 

... 그렇지 않으면 @ anubhava의 대답을 사용하십시오.

+1

'[-z $을 댓글]'나쁜 생각 왜냐하면 OP의 예제는'$ COMMENT3'은 공백을 포함 할 가능성이 높다고 제안하기 때문이다. 어쨌든'[-z "$ COMMENT3"]'는 어떻습니까? – ruakh

+0

@ruakh 맞아, 나는 그걸 놓쳤다 – hek2mgl

관련 문제