폴더의 파일을 반복할 때 이상한 동작

폴더의 파일을 반복할 때 이상한 동작

여기서 무슨 일이 일어나고 있는지 모릅니다. 저는 Mac에서 Bash 3.2를 사용하고 있습니다. 나는 가지고있다:

ores_resource(){
  for f in "$(cd "$HOME/.oresoftware/bash" && find . -type f)"; do
       f="${f:2}"
       echo "my file $f"
  done;
}

나는 다음과 같은 응답을 받았습니다.

my file r2g.sh
./fame.completion.sh
./read_json.sh
./nlu.sh
./lmx.sh
./public-bash-utils.sh
./run-tsc-if.sh
./r2g.completion.sh
./fame.sh
./waldo.sh
./nlu.completion.sh

그렇다면 여기서 정확히 무슨 일이 일어나고 있는 걸까요? 각 줄 앞에 있는 "내 파일"이 로그아웃될 것이라고 생각했습니까?

답변1

옵션을 사용하는 find솔루션 은 다음과 같습니다 -exec.

ores_resource() {
  cd $HOME/.oresoftware/bash
  find . -type f -exec bash -c 'echo "my file ${1:2}"' bash {} \;
}

find발견된 각 파일 이름에 대해 다음 명령 문자열을 사용하여 새로운 bash 프로세스가 시작됩니다 -c. 각 파일 이름은 {}bash 프로세스에 매개변수로 전달됩니다 $1(variables 와 마찬가지로 $f).

관련 정보