함수는 호출되기전에 정의가 미리 이루어져야 한다. Korn shell 함수는 function 키워드와 함수이름으로 정의 된다. 중괄호 양측에 모두 space 를 줘야 한다 export FPATH=directory FPATH 를 설정해야 함수사용 가능하다. |
function function_name { command; command; } |
function usage { print "Usage $0[-y][-g]; exit 1" } |
함수리스팅과 설정해제 |
함수정의 부분을 출력시키려면 typeset -f 코맨드를 사용한다. export 된 함수정의를 출력시키려면 typeset -fx 코맨드 사용한다. 함수정의를 설정해제 시키려면 unset -f function_name |
로컬변수와 리턴값 |
typeset 코맨드는 로컬변수를 생성시키기 위해 사용한다. 함수의 리턴값은 가장 최금 실행된 코맨드의 status 값을 리턴한다. return 값이 특정 값이 주어지면 (0~255) ? 변수에 저장된다. |
#!/bin/ksh function increment { typeset sum #local 변수설정 (( sum = $1 + 1 )) return $sum } print -n "The sum is " increment $1 print $? #local 변수라서 값이 출력되지 않는다 print $sum |
$increment 6 리턴값 7 $incremant 255 리턴값 0 |
#!/bin/ksh function square { (( sq = $1 * $1 )) print "Number to be squared is $1." print "The result is $sq" } read number?"Give me a number to square" value_returned = $(square) #함수대체 print $value_returned |
$ ksh -x square + read number?Give me a number to square : Give me a number to square : 5 + square square: sq = + : 더 많은 토큰들이 와야 합니다 + rtn = 5 square[10]: rtn: 찾을 수 없음 |
'IT' 카테고리의 다른 글
0027. [ typeset ] ksh typeset 과 함수옵션 (0) | 2015.06.30 |
---|---|
0026. [ bc ] bc scale 로 계산하기 (0) | 2015.06.30 |
0024. export 된 함수 (0) | 2015.06.30 |
0023. [ IFS ] IFS 와 필드 (0) | 2015.06.30 |
0022. 배열 (0) | 2015.06.30 |
0024. export 된 함수
함수를 typeset 코맨드로 ENV 파일에서 정의하지 않는한 서브 shell 에 의해 함수정의가 상속될수 없다. typeset -fx function_names, typeset -fx 코맨드를 사용해서 함수를 현재 Korn Shell 에서 스크립트나 하나의 스크립트에서 다른 스크립트로 엑스포트 시킬수 있다. |
#!/bin/ksh function sayit { print "How are you $1 } typeset -fx sayit sayit Tommy print "Going to other script" usage other_scr print "Back in calling script" |
print "In other script" #첫문장에 매직넘버 #!/bin/ksh 를 쓰면 안된다 sayit DAM print "Returning to calling script" |
'IT' 카테고리의 다른 글
0026. [ bc ] bc scale 로 계산하기 (0) | 2015.06.30 |
---|---|
0025. 함수 (0) | 2015.06.30 |
0023. [ IFS ] IFS 와 필드 (0) | 2015.06.30 |
0022. 배열 (0) | 2015.06.30 |
0021. 의사시그널 pseudo (0) | 2015.06.30 |
0023. [ IFS ] IFS 와 필드
#!/bin/ksh names=Horany:Kidrany:Herbever OLDIFS="$IFS" IFS=":" for person in $names do print Hi $person done IFS="$OLDIFS" set JILL JAM KIM for girl in $* do print HOWDY $girl done |
'IT' 카테고리의 다른 글
0025. 함수 (0) | 2015.06.30 |
---|---|
0024. export 된 함수 (0) | 2015.06.30 |
0022. 배열 (0) | 2015.06.30 |
0021. 의사시그널 pseudo (0) | 2015.06.30 |
0020. 시그널 트래핑 (0) | 2015.06.30 |
Korn Shell 배열은 1차원 배열로 1,024개의 요소를 가질수 있다. 이때 인덱스는 0 부터 시작한다. set -A 배열이름 배열요소 명령 으로도 설정 가능하다. |
$array[0]=horany $array[1]=kidrany $array[2]=herbever $print ${array[0]} $print ${array[1]} $print ${array[2]} $print ${array[*]} $print ${#array[*]} |
$typeset -i ints[4] $ints[0]=50 $ints[1]=75 $ints[2]=100 $ints[3]=happy ksh: happy:bat number typeset 코맨드가 4개의 |
set 코맨드로 배열생성 -A 옵션 다음에 나오는 첫번째 워드는 배열의 이름이다. 그리고 나머지 워드들은 배열의 요소들이 된다 $set -A fruit apples pears peaches $print ${fruit[0]} $print ${fruit[1]} $print ${fruit[*]} $fruit[1]=plums $print ${fruit[*]} |
'IT' 카테고리의 다른 글
0024. export 된 함수 (0) | 2015.06.30 |
---|---|
0023. [ IFS ] IFS 와 필드 (0) | 2015.06.30 |
0021. 의사시그널 pseudo (0) | 2015.06.30 |
0020. 시그널 트래핑 (0) | 2015.06.30 |
0019. [ trap ] trap 시그널 예제 (0) | 2015.06.30 |
0021. 의사시그널 pseudo
의사시그널은 실제 시그널이 아니지만 shell 이 프로그램을 디버깅하기 위해서 생성된다. trap 코맨드는 의사코맨드를 실제 시그널 처럼 처리해 준다. |
시그널 설정해제 시그널은 디폴트로 리셋시키기 위해서는 trap 코맨드 다음에 시그널 이름이나 번호가 와야 한다. trap 2 trap INT 시그널 2인 SIGINT 를 리셋시킨다. 이 시그널은 control-C 키기 눌러질때 프로세스를 종료 시킨다(kill) |
시그널무시 trap 코맨드 다음에 한쌍의 빈 인용부호가 오면 리스팅된 시그널이 무시된다. trap " " 1 2 trap "" HUP INT 시그널 1 과 2 가 shell 에 의해 무시된다. 트랙리스팅 trap 을 입력하면 모든 트랩과 이들에 지정된 코맨드가 리스트로 출력된다. |
'IT' 카테고리의 다른 글
0023. [ IFS ] IFS 와 필드 (0) | 2015.06.30 |
---|---|
0022. 배열 (0) | 2015.06.30 |
0020. 시그널 트래핑 (0) | 2015.06.30 |
0019. [ trap ] trap 시그널 예제 (0) | 2015.06.30 |
0018. [ trap ] trap 의사signal 예제 (0) | 2015.06.30 |