Bash 스크립트 내의 변수에 명령 출력을 할당할 수 없습니다.

Bash 스크립트 내의 변수에 명령 출력을 할당할 수 없습니다.

나는 한동안 개인 bash 스크립트 문제로 어려움을 겪고 있으며 온라인에서 찾은 제안을 사용하여 많은 행운을 얻지 못했습니다. 나는 이 질문이 다른 많은 질문과 거의 동일해 보인다는 것을 알고 있지만, 그 질문을 모두 살펴본 후에도 여전히 기쁨이 없습니다.

내 생각에 가장 좋은 접근 방식은 내가 현재 갖고 있는 것의 목록을 만들고 거기서부터 작업하는 것입니다.

따라서 내 스크립트의 관련 부분은 다음과 같습니다.

#!/bin/bash

SOURCE_FILE="$1"

cat "$SOURCE_FILE" | while read FOLDER
do

  ...

  FOLDER_RULE=$(echo ${FOLDER} | grep -oP '\[.*\]')
  FOLDER_NAME=$(echo ${FOLDER} | grep -oP '.+(?=\[.*\]')

  # these output absolutely nothing:
  echo FOLDER_RULE is "$FOLDER_RULE"
  echo FOLDER_NAME is "$FOLDER_NAME"

  ...
done

참조 $SOURCE_FILE는 런타임 시 스크립트에 전달하는 문자열 목록이 포함된 간단한 텍스트 파일을 가리킵니다. 이 파일의 일부 더미 데이터는 다음과 같습니다.

Folder One [ALL]
Folder Two [LATEST]
Folder Three [FIRST]
Folder Four

$FOLDER문제 없이 스크립트에 있는 내용을 에코할 수 있으며 $(echo ... | grep ...)이 두 줄은 터미널에서 직접 실행할 때 완벽하게 작동하지만 내 bash 파일에서는 아무것도 얻지 못합니다.

grep다양한 방법으로 명령을 구조화하고, 변수를 ${...}sums 로 참조하고 "$...", echo캡처하려는 출력이 있는 명령의 출력을 가져오려고 시도했지만 여전히 아무것도 얻지 못했습니다.

제가 뭔가 간단한 것을 놓치고 있다는 것은 확실합니다. 하지만 제가 수행한 검색 중 어느 것도 이 문제를 해결하는 데 도움이 되지 않았습니다. 누군가 내가 여기서 뭘 잘못하고 있는지 이해하도록 도와줄 수 있나요?

답변1

결국 문제는 내 정규식에 있습니다. 그 줄을 긁어내다하다끝에 있는 포함은 [something]예상대로 변수에 값을 할당하는 반면 끝에 해당 특정 문자열이 없는 줄은 두 변수를 모두 비워 둡니다. 적어도 정규식 측면을 고칠 수 있습니다.

어리석은 질문에 대해 사과드리며, 도움을 주신 댓글 작성자에게 진심으로 감사드립니다. 시간을 내주셔서 정말 감사드립니다. :)

관련 정보