Bash 쉘스크립트 배열

혹시해서 적어두지만

bash쉘스크립트에서는 따로 자료형이 정해지지 않았기 때문에 그냥

아무변수나 배열처럼 쓸수있다.

배열 대입
episode_array[0]="abc"
episode_array[1]="def"

배열출력
echo ${episode_array[0]}
echo ${episode_array[1]}
# 덧> 쿼우팅은 알아서 할것!

배열 삭제
unset 명령어 이용, 한다고 합니다 아직 사용해 보진 않음;;
unset episode_array
unset eposode_array[0]

배열 전체 길이 구하기 (첨자길이)
${#episode_array[@]}
$(#episode_array[1]} # 이게 1번 array 길이 구하는거였나?

배열A를 배열 B로 복사
B=("${A[@]")


배열의 첨자(인덱스) 안에 @,* 들어가는거는 IFS에서 $*와 $@ 와 비슷하다고 한다'

함수를 쓸떄 아규먼트로 보내기

Movie_Choice "${episode_array[@]}"

이렇게 쓰면
function Move_Choice()
{
     echo "$1"      #episode_array[0]
     echo "$2"      #episode_array[1]
     echo "#3"      #episode_array[2]
}
 

이상하게 배열자체를 함수로 넘기질 못하겠네;

이거 아시는분은 댓글을!!!

Movie_Choice ("${A[@]")

이게 안먹히기 때문에

function Movie_Choice()
{
     array2=( "$@" )
}

Movie_Choice ${episode_array[@]}


이렇게 사용하고 있다..;; 이거분명 넘기는 방법이 있을텐데 모르겠음

아나 귀차너 그냥 전역으로 쓰고 때려지우는게 나을듯
Trackback 0 Comment 9
  1. Favicon of http://sakuragi.org BlogIcon sakuragi 2009.01.14 11:48 address edit & del reply

    글만 읽어서는 뭐가 안된다는 건지 잘 모르겠네요. ^^
    ------
    function Move_Choice()
    {
    echo "$1" #episode_array[0]
    echo "$2" #episode_array[1]
    echo "$3" #episode_array[2]
    }

    Movie_Choice "${episode_array[@]}"
    ------
    이렇게 쓰는 건 잘되는데, 이게 안된다는 말씀이신가요?
    lowid 님 덕에 bash 스크립트도 배우는군요~ ^^

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2009.01.16 13:57 신고 address edit & del

      irc에서도 이야기했지만, 다시한번정리하자면,
      array[0]="a"
      array[1]="b" 가 있다고 하고
      A "${array[@]}" 같이 함수를 Call하면
      function A에서는 array를 변수를 재대로 받지 못하고 인자1($1) 이 a 인자2($2)가 b가 되버린다는 것이죠
      원래는 function A에서 array[0]=1, array[1]=2 로 직접 받아올수 있어야하는데(array라는 배열 자체가 넘어와야하는데) 그게 안된다는..
      아 이설명이 더 못알아 먹겠네여 ;;

  2. 무달 2009.01.17 17:25 address edit & del reply

    크크크 님하 일일 포스팅하시다면서 왜 또 새 글 안 올라옴?

    • lowid 2009.01.18 14:34 address edit & del

      아 그거여? 한 3일하고 접음 ㅋㅋㅋㅋㅋㅋㅋㅋ
      내가생각해도 좀 안습 ㅜㅜ

  3. 삼각김밥 2009.04.23 16:36 address edit & del reply

    보통 프로그램에서 사용하는 방법은 Call by Value, Call by Reference 가 있습니다. C 함수에서는 이게 모두 다 가능하지만 쉘은 Call by Value 만을 지원하는 것으로 알고 있습니다. 즉 배열은 메모리 주소(포인터)로 저장, 관리되지만 포인터 변수가 없는 쉘에서는 배열 자체를 다른 함수에서 참조해서 사용할 수 없습니다. C 함수에서 swap 함수를 참고하시면 쉽게 이해가 가실 겁니다.

  4. 사랑줍는거지 2009.06.18 18:04 address edit & del reply

    오려가도 되나요? 갠적으로 메모 해두고 싶어서요

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2009.06.19 01:05 신고 address edit & del

      마음대로 가져가 주세요~

  5. 2010.11.03 17:55 address edit & del reply

    비밀댓글입니다

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2010.11.04 01:16 신고 address edit & del

      ㅇㅇ
      근데 뭘 이른걸 비밀댓글로 달고 그래 ㅋㅋ
      난도 누군가 했네 ....ㅋ

prev 1 2 3 4 5 6 7 8 9 next