답변:
스크립트가 .mp4현재 디렉토리에서 파일, 즉 스크립트가 실행되고있는 디렉토리를 찾고 상대 파일을 찾지 않는 상대 경로를 사용하는 .mp4경우 리터럴 *.mp4파일을 찾습니다 ( nullglob/ failglob가 아닌 것으로 가정) 이 파일이 존재하지 않기 때문에 오류 메시지가 표시 *.mp4: No Such File or Directory됩니다.
대신 절대 경로를 사용해야합니다.
for i in /directory/*.mp4; do ...; done
교체 /directory/실제 디렉토리 경로와; 원하는 경우 디렉토리 이름을 첫 번째 인수로 사용할 수도 있습니다.
for i in "$1"/*.mp4; do ...; done
여기서 절대 또는 상대 경로를 사용할 수 있지만 절대 경로는 항상 더 안전한 옵션입니다.
이제 일반적인 방식으로 실행 스크립트를 호출하십시오.
/path/to/script.sh /directory
스크립트 디렉토리에서 :
./script.sh /directory
*.mp4어떤 파일 과도 일치 할 수 없으므로 파일을 리터럴 파일 이름으로 간주하고 파일 *.mp4(유효한 파일 이름) 인 파일을 열려고하지만 파일 이 없기 때문에 실패합니다 *.mp4현재 디렉토리에서 호출 됩니다. 누군가 *.mp4일치하는 파일 이름 목록으로 항상 확장 한다고 생각할 수 있습니다.이 파일은 비어있을 수 있습니다 (이 경우 for루프는 아무것도하지 않지만 오류는 발생하지 않습니다). 그렇지 않습니다. *.mp4항상 무언가로 확장됩니다.
bash)이지만 항상 그런 것은 아닙니다. 보고 nullglob/ failglob.