shell 에서 A=${1:-1} 의 의미가 뭘까요?
글쓴이: bluesound / 작성시간: 목, 2007/01/04 - 6:34오후
안녕하세요^^
어제 날짜 구하는 shell source 를 보는 중인데 이해 안가는 부분이 있습니다.
OFFSET=${1:-1} case $OFFSET in *[!0-9]* | ???* | 3? | 29) print -u2 "Invalid input" ; exit 1;; esac eval `date "+day=%d; month=%m; year=%Y` typeset -Z2 day month typeset -Z4 year day=$((day - OFFSET)) if (( day <= 0 )) ;then month=$((month - 1)) if (( month == 0 )) ;then year=$((year - 1)) month=12 fi set -A days `cal $month $year` xday=${days[$(( ${#days[*]}-1 ))]} day=$((xday + day)) fi PRE_DATE=$year$month$day echo $PRE_DATE
여기서 첫번째 줄....
OFFSET=${1:-1}
이녀석의 의미를 모르겠습니다.
먼가 if 문의 냄새가 나는데 정확히 모르겠네요;;;;
알려주세요^^
Forums:
$숫자는 파라메터
$숫자는 파라메터 입니다.
${변수:시작:문자수} 은 문자열 자르기 입니다.
${변수:-시작} 은 앞부분을 떼먹습니다.
sh test.sh asdf zxcv
emerge money
https://xenosi.de/
Good Answer!!
Good Answer!!
? 송효진님...모르겠어요 ㅡ.ㅡ;;;
무슨 말씀이신지 모르겠어요;;;
sh test.sh asdf zxcv 하면 결과가 어떻게 나오는거죠???
참...저는 hp-ux 네요;;;
하지만...리눅스의 경우에서 어떤지 알려주시면 감사하겠습니다.^^
송효진님이 쓰신
송효진님이 쓰신 글을 보고 테스트를 해 봤는데 (잘 몰랐던 거라...)
${var:-aaa} 등과 같은 경우는 잘못 설명하신 게 아닌가 생각됩니다.
${var:-aaa} 는 $var 가 정의되지 않았다면 aaa 값이 된다는 것 같습니다.
따라서 ${1:-1} 은 shell script의 첫번째 아규먼트가 없다면 1을 쓰라는 말인 것으로 생각되네요. 다시 말하면 아규먼트를 안 주고 프로그램을 실행시키면 default 값으로 1을 쓰라는 말인 것 같습니다. 아규먼트가 주어졌다면 그것이 사용되고요.
--
foldl (flip (:)) [] "universe"
송효진님의 의도대로 하려면 ':' 다음에 한칸을
송효진님의 의도(substring)대로 하려면 ':' 다음에 한칸을 띄어주거나 () 로 묶어 주어야 합니다.
15년전 글이지만 ^^
감사합니다.^^
esrevinu 님 감사해요^^
말씀하신대로 동작하는것 같아요~
그게 저 위 프로그램 동작에 쓰인것도 이해가 갑니다. ^^
shell source 감사하긴한데 알아보기가 상당히 어렵군요 ㅡ.ㅡ;;;;
덕분에...이전 담당자의 쉘은...모르면 그냥 다시 짜는경우가 많아서;;;
3.5.3 Shell Parameter
3.5.3 Shell Parameter Expansion
http://www.gnu.org/software/bash/manual/bashref.html#SEC29
${parameter:-word}
If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted
$1이 unset or null이면 -1로 설정을 ... 아니면 그냥 그대로 ...
--
마잇
--
마잇
마잇님 감사해용^^
말씀하신대로
$1 이 unset or null 이면...
-word 가 set 되더군요^^
댓글 달기