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

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

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

내 최근 시도의 개요는 다음과 같습니다.

FILES=path/*/*

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

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

답변1

일반 변수를 사용하여 glob 확장 시퀀스를 저장하는 대신 적절한 배열을 사용하고 쉘 글로빙 옵션을 활성화하여 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

관련 정보