여기서 무슨 일이 일어나고 있는지 모릅니다. 저는 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
).