![shebang에 따라 폴더에 있는 모든 파일의 유효성을 확인하세요. [닫기]](https://linux55.com/image/114981/shebang%EC%97%90%20%EB%94%B0%EB%9D%BC%20%ED%8F%B4%EB%8D%94%EC%97%90%20%EC%9E%88%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9C%A0%ED%9A%A8%EC%84%B1%EC%9D%84%20%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94.%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
일부 lua 및 일부 bash 파일이 포함된 프로젝트가 있습니다. 나는 모든 파일을 반복하고 싶고 shebang에 따라 유효성 검사를 수행하고 싶습니다.
답변1
첫 번째 줄을 사용 find
하고 awk
확인하고(awk는 POSIX awks와 마찬가지로 FNR을 지원해야 함) 찾을 몇 가지 검색 패턴을 추가할 수 있습니다(예: 숨겨진 폴더 제외).
echo "check bash files ..."
find . -not -path '*/\.*' \
-type f -exec awk 'FNR == 1 && /^#!.*sh/{print FILENAME}' {} + | \
while IFS= read -r f; do
echo "checking $f ..."
bash -n "$f"
done
참고: IFS=
다음 중 하나를 포함하는 파일 이름이 분할되는 것을 방지하는 데 사용됩니다 $IFS
. 예:'a b'