BaeBox

함수 사용법 본문

개발 관련/LInux

함수 사용법

배모씨. 2020. 7. 3. 15:01
반응형

함수 ( 출처 : 위키백과 )

다른 언어에서와 마찬가지로 함수를 선언, 정의하고 호출하여 사용한다. 

#!/bin/bash

func1() {
  read -p "Enter a value: " value
  echo "doubling a value"
  return $[ $value * 2 ]
}

func1
echo "$value"
echo "The new value  is $?"

다른 언어들과의 차이점은 리턴값을 받을 변수가 정해져 있다는 점($?)이다. 

이미지 출처 : 제타위키


함수에 인자를 넘겨주고 싶을 경우 아래와 같이 사용할 수 있다. 

#!/bin/bash

function arraydblr {
  local origarry
  local newarray
  local elements
  local i
  origarray=($echo "$@")
  newarray=($(echo "$@"))
  elements=$[ $# - 1 ]

#  echo "================="
#  echo origarray ${origarray[*]}
#  echo newarray ${newarray[*]}
#  echo elements $elements
#  echo $@ $#
#  echo "================="

  for (( i = 0; i<= $elements; i++ )) {
    newarray[$i]=$[ ${origarray[$i]} * 2 ]
  }
  echo ${newarray[*]}
}


myarray=(1 2 3 4 5)
echo "The original array is: ${myarray[*]}"
arg1=$(echo ${myarray[*]})
result=($(arraydblr $arg1))
echo "The enw array is: ${result[*]}"

result=($(arraydblr $arg1)) 를 보면 arg1을 인자로 넘겨준 것을 알 수 있다. 

이 경우 주의하여야 할 것은 하나의 인자를 넘긴 것이 아니라 배열의 크기만큼의 인자를 넘긴 것이 된다. 크기가 5인 배열이므로, 다섯 개의 인자를 넘긴 것으로 볼 수 있다. (함수 내에서 $1, $2, $3, $4, $5 를 찍어보면 확인할 수 있다.)

변수 의미
$@ 넘겨받은 전체 인자(param) 값
$# 넘겨받은 인자(param) 갯수
$1, $2, $3, ... , $n 넘겨받은 n번째 순번의 인자(param)

 


함수 출처 : 리눅스 커맨드라인 쉘 스크립트 바이블.

반응형

'개발 관련 > LInux' 카테고리의 다른 글

cron 가라로 돌리기.  (0) 2020.07.08
쉘 스크립트 옵션  (0) 2020.07.08
Sudoers  (0) 2020.01.20
Parted ( 파티션 나누기)  (0) 2020.01.15
SCP : UNPROTECTED PRIVATE KEY FILE!  (0) 2019.11.26
Comments