저는 Bash 스크립팅을 처음 접했고 현재 for 루프, 배열 및 변수 할당/대체 작업에서 해결 방법을 모르는 작은 문제를 다루고 있습니다. 나는 말 그대로새로운, 나는 이것을 찾는 방법조차 모릅니다. 누구든지 이렇게 말할 수 있지만 이것은 숙제나 그런 것이 아니라는 점을 강조합니다. 나중에 처리하기 위해 엄청난 양의 데이터를 재구성해야 하고 어느 정도 시간이 지나면 할 것이라고 생각했습니다.똑똑한Bash를 배우면서 말이죠.
배경: 폴더1, 폴더2, 폴더3이라는 세 개의 하위 디렉터리가 포함된 디렉터리가 있습니다. 각 하위 디렉터리에는하나data.txt 파일. 각 data.txt 파일에는 행 수가 고정된 세 개의 열이 있습니다.
목표: 하위 디렉터리를 반복하고 다음을 수행하는 Bash 스크립트를 기본 디렉터리에서 시작하고 싶습니다.
- data.txt를 입력하고 액세스합니다.
- 각 열을 해당 배열로 읽습니다
arr1
. (다음 하위 디렉터리에 들어갈 때 이 배열은 비워지거나 재설정됩니다.arr2
)arr3
- 그것은 , , ...,
arr2[0]
로 읽혀 집니다 . 의 데이터에 대해서도 유사한 구조를 따릅니다 . 과거 반복의 데이터를 유지 하고 원하는 출력 배열을 구성합니다. 새 디렉토리를 청소할 때마다 여기에 데이터가 추가됩니다.earr1
arr2[1]
earr2
arr2[j-1]
earr$j
arr3
earr$j
지나치게 복잡해 보이지만 이것이 제가 작업해야 하는 데이터의 구조입니다. 대부분의 경우, 나는 작동하는 솔루션을 알아냈습니다(물론, 아마도 최선의 솔루션은 아닐 것입니다).
문제: 어떤 이유로 식별할 수 없습니다. earr$j+=(${arr2[j-1]})
루프 오버에서 as(및 제가 시도한 모든 종류의 변형)를 추가하려고 할 때마다 모든 종류의 오류가 발생합니다 j
. 아래는 나에게 문제를 일으키는 스 니펫입니다. 누군가 문제가 무엇인지 지적하고 가능하다면 해결 방법의 실제 사례를 제공해 주시면 감사하겠습니다.
문제의 for 루프:
for j in $(seq 1 $number_of_lists); do echo "(${arr2[j-1]})"; earr$j+=(${arr2[j-1]}); echo "(${arr3[j-1]})"; done
특히 그 earr$j+=(${arr2[j-1]})
부분에 고민이 많아요. 이것은 내 오류 출력입니다.
./next.sh: line 33: syntax error near unexpected token "${arr2[j-1]}''
그리고 ./next.sh: line 33: earr$j+=('${arr2[j-1]}')
.
어떤 제안이라도 미리 감사드립니다.