실행 프로그램에 파일 이름을 변수로 전달하는 방법은 무엇입니까?

실행 프로그램에 파일 이름을 변수로 전달하는 방법은 무엇입니까?

이것은 비교적 간단한 질문이어야 합니다. 루프에서 실행 가능한 프로그램을 통해 여러 파일을 전달하려고 합니다. 여러 전략(배열에 저장 등)을 시도했지만 파일 이름이 변수로 인식되지 않는 것 같습니다. 내가 받는 오류는 다음과 같습니다. 해당 파일이나 디렉터리가 없습니다.

나의 최근 시도에 대한 개요:

FILES=path/*/*

for f in $FILES
do
./function -input $f 
done

저는 bash 쉘에서 작업하고 있습니다.

답변1

globstar와일드카드 확장 시퀀스를 저장하기 위해 일반 변수를 사용하는 대신 적절한 배열을 사용하고 쉘 와일드카드 옵션을 활성화하여 모든 하위 디렉터리의 파일을 채우는 것이 좋습니다.

shopt -s globstar nullglob
file_list=(path/**/*)

배열 루프를 사용하여 각 파일을 처리합니다.

for file in "${file_list[@]}"; do
    printf '%s\n' "$file"
    # Your other actions on file goes here
done

관련 정보