Bash-지역 변수 대 전역 변수의 배열 길이 (할당)

CvRChameleon

다음 스크립트가 있습니다.

단순화하기 위해 현재 동작을 더 쉽게 표시하기 위해 대체 변수를 제거했습니다.

  declare -a CHARACTERS_SEARCHFOR=("-" ".")
  declare -a CHARACTERS_REPLACEWITH=("X" "Y")

  function replacerCharacters(){
      local searchers="${CHARACTERS_SEARCHFOR[@]}"
      local searchers2="${CHARACTERS_SEARCHFOR}"

      echo "Count Original: ${#CHARACTERS_SEARCHFOR[@]}"
      echo "Count Assigned: ${#searchers[@]}"
      echo "Count Assigned Alternative: ${#searchers2[@]}"

      echo "Content Original: ${CHARACTERS_SEARCHFOR[@]}"
      echo "Content Assigned: ${searchers[@]}"
      echo "Content Assigned Alternative: ${searchers2[@]}"
  }

replacerCharacters

이것은 나에게 다음과 같은 출력을 제공합니다.

  Count Original: 2
  Count Assigned: 1
  Count Assigned Alternative: 1
  Content Original: - .
  Content Assigned: - .
  Content Assigned Alternative: -

분명히 $searchers2구문이 잘못되었습니다. 예상했지만 항목 하나를$searchers 반환하는 이유를 테스트하는 데 사용 했지만 "시각적으로"는 배열과 동일한 출력을 가지고 있습니다.

배열을 입력으로 받기 위해 지역 변수를 올바르게 할당하는 방법은 무엇입니까?

나는 결국 이와 같은 일을하고 싶습니다 : 명령 줄로 인수를 우선적으로 제공하십시오 --- 그러나 명령 줄에서 배열을 제공하는 것이 다를 수 있다고 가정합니다

  function replacerCharacters(){
     local searchers="$1"
     local replacers="$2"

     for index in "${!searchers[@]}"; do
        itemSearch="${searchers[$index]}"
        itemReplace="${replacers[$index]}"
     done
  }

  replacerCharacters "${SOME_OTHER_ARRAY[@]}" "${SOME_OTHER_REPLACERS[@]}"
소코 위

배열을 입력으로 받기 위해 지역 변수를 올바르게 할당하는 방법은 무엇입니까?

변수가 로컬인지 글로벌인지는 중요하지 않습니다. 두 경우 모두 수동 배열 정의에서와 같이 괄호를 사용하십시오.

array=("${otherArray[@]}")

선호하는 명령 줄로 인수를 제공하지만 명령 줄에서 배열을 제공하는 것이 다를 수 있다고 가정합니다.

하나의 어레이를 제공 할 수 있습니다.

f() {
  local x=("$@")
  declare -p x
}
a=(1 2 3)
f "${a[@]}"

그러나 여러 배열의 경우 (에서와 같이 f "${a[@]}" "${b[@]}") 문제가 있습니다. 함수는 첫 번째 배열이 끝나고 두 번째 배열이 시작되는 위치를 알지 못합니다. 당신은 할 수 있습니다

  • 첫 번째 배열의 길이를 지정하여 시작 / 종료를 나타냅니다.

f() {
  local xlen="$1";
  shift
  x=("${@:1:xlen}") y=("${@:xlen+1}")
  declare -p x y
}
...
f "${#a[@]}" "${a[@]}" "${b[@]}"
  • f "${a[@]}" , "${b[@]}"배열에 나타나지 않아야 하는 구분 기호 ( )를 삽입하여 시작 / 끝을 나타냅니다 .

f() {
  local dpos=$(printf %s\\0 "$@" | grep -zFxnm1 DELIM | sed 's/:.*//');
  x=("${@:1:dpos-1}") y=("${@:dpos+1}")
  declare -p x y
}
...
f "${a[@]}" DELIM "${b[@]}"

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

반환 값에 대한 전역 변수 할당과 지역 변수 할당의 의미 론적 차이

분류에서Dev

전역 및 지역 변수 할당

분류에서Dev

전역 var가 지역이 됨 --UnboundLocalError : 할당 전에 참조 된 지역 변수

분류에서Dev

할당되지 않은 지역 변수 배열 사용

분류에서Dev

할당 오류 이전에 참조 된 지역 변수

분류에서Dev

목록에 대한 변수 이름을 사용하여 함수 내 목록 요소의 전역 할당

분류에서Dev

JS for 루프의 전역 변수에 대한 지역 변수, 루프 종료 후 값이 변경됨

분류에서Dev

Bash의 속성 파일에서 지역 변수와 변수의 조합으로 변수에 여러 값 할당

분류에서Dev

Linux bash의 함수에서 지역 변수를 새 값으로 할당

분류에서Dev

Python : 변수와 클래스의 이름이 같은 경우 : UnboundLocalError : 할당 전에 참조 된 지역 변수 'foo'

분류에서Dev

전역 변수를 변경하지 않고 전역 변수의 값에 할당 된 지역 변수를 어떻게 변경할 수 있습니까?

분류에서Dev

할당 전 지역 변수의 값은 무엇입니까?

분류에서Dev

할당 전에 참조 된 / blog / search / 지역 변수 'cd'의 UnboundLocalError

분류에서Dev

전역 변수 memset 대 지역 변수 생성 반복

분류에서Dev

이벤트 핸들러 함수의 전역 및 지역 변수

분류에서Dev

전역 및 지역 변수

분류에서Dev

'할당 전에 참조 된 지역 변수'를 이해하기 어려움

분류에서Dev

이상한 조건에서 할당 전에 참조 된 지역 변수

분류에서Dev

IF 조건 파이썬 "할당 전에 참조 된 지역 변수 'monthlyPayment'"

분류에서Dev

전역 변수를 수정하는 함수 범위에서 두 변수 할당의 차이점

분류에서Dev

여러 GPU에 전역 변수 할당

분류에서Dev

전역 변수에 값 할당

분류에서Dev

전역 변수`environ`을 통해 액세스 할 수있는 문자열이 환경에 대한 변경 사항을 반영하지 않습니까?

분류에서Dev

ReactJS Hooks 대 전역 변수

분류에서Dev

전역 대신 지역 변수를 선택하는 Lua 함수

분류에서Dev

c ++ 가변 길이 인수 목록 대신 배열 전달

분류에서Dev

할당 된 지역 변수가 null이되는 이유

분류에서Dev

Python의 다중 처리-UnboundLocalError : 할당 전에 참조 된 지역 변수 '데이터'

분류에서Dev

Java에 하루 길이에 대한 전역 변수가 있습니까?

Related 관련 기사

  1. 1

    반환 값에 대한 전역 변수 할당과 지역 변수 할당의 의미 론적 차이

  2. 2

    전역 및 지역 변수 할당

  3. 3

    전역 var가 지역이 됨 --UnboundLocalError : 할당 전에 참조 된 지역 변수

  4. 4

    할당되지 않은 지역 변수 배열 사용

  5. 5

    할당 오류 이전에 참조 된 지역 변수

  6. 6

    목록에 대한 변수 이름을 사용하여 함수 내 목록 요소의 전역 할당

  7. 7

    JS for 루프의 전역 변수에 대한 지역 변수, 루프 종료 후 값이 변경됨

  8. 8

    Bash의 속성 파일에서 지역 변수와 변수의 조합으로 변수에 여러 값 할당

  9. 9

    Linux bash의 함수에서 지역 변수를 새 값으로 할당

  10. 10

    Python : 변수와 클래스의 이름이 같은 경우 : UnboundLocalError : 할당 전에 참조 된 지역 변수 'foo'

  11. 11

    전역 변수를 변경하지 않고 전역 변수의 값에 할당 된 지역 변수를 어떻게 변경할 수 있습니까?

  12. 12

    할당 전 지역 변수의 값은 무엇입니까?

  13. 13

    할당 전에 참조 된 / blog / search / 지역 변수 'cd'의 UnboundLocalError

  14. 14

    전역 변수 memset 대 지역 변수 생성 반복

  15. 15

    이벤트 핸들러 함수의 전역 및 지역 변수

  16. 16

    전역 및 지역 변수

  17. 17

    '할당 전에 참조 된 지역 변수'를 이해하기 어려움

  18. 18

    이상한 조건에서 할당 전에 참조 된 지역 변수

  19. 19

    IF 조건 파이썬 "할당 전에 참조 된 지역 변수 'monthlyPayment'"

  20. 20

    전역 변수를 수정하는 함수 범위에서 두 변수 할당의 차이점

  21. 21

    여러 GPU에 전역 변수 할당

  22. 22

    전역 변수에 값 할당

  23. 23

    전역 변수`environ`을 통해 액세스 할 수있는 문자열이 환경에 대한 변경 사항을 반영하지 않습니까?

  24. 24

    ReactJS Hooks 대 전역 변수

  25. 25

    전역 대신 지역 변수를 선택하는 Lua 함수

  26. 26

    c ++ 가변 길이 인수 목록 대신 배열 전달

  27. 27

    할당 된 지역 변수가 null이되는 이유

  28. 28

    Python의 다중 처리-UnboundLocalError : 할당 전에 참조 된 지역 변수 '데이터'

  29. 29

    Java에 하루 길이에 대한 전역 변수가 있습니까?

뜨겁다태그

보관