디렉터리에서 .c(C 파일)로 끝나는 모든 파일에 대해 일부 작업을 수행해 보세요. 코드는 다음과 같습니다
#!/bin/sh
clear
for file in *
do
if [ $file="*.c" ]
then
echo $file
fi
done
exit 0
작동하지 않습니다. 단지 모든 파일과 디렉터리를 나열합니다.
답변1
on에 대한 조건부 서식이 잘못되었습니다. 문자열이 비어 있지 않은지 if
확인하는 것뿐입니다 . $file=*.c
다음으로 변경해 보세요.
#!/bin/sh
clear
for file in *
do
if [ "$file" = "*.c" ]
then
echo "$file"
fi
done
exit 0
반면, 이 경우 인코딩된 문자 "*"는 작동하지 않지만 문자열로 해석됩니다.
노력하다:
#!/bin/sh
clear
for file in *.c
do
echo "$file"
done
exit 0
답변2
테스트 문은 파일의 접미사가 인지 확인하지 않습니다 .c
. (대부분의 경우) 와 같은지 $file
확인 *.c
합니다 test(1)
.
그러나 for 문을 읽기로 바꾸면
for file in *.c
for 문은 로 끝나는 파일만 전달하므로 .c
다시 확인할 필요가 없습니다.
답변3
또 다른 라이너 방법은 다음을 사용하는 것입니다 find
.
find . -name "*.c" | xargs echo
이 파일로 실제로 수행하려는 작업에 따라 다르므로 이것이 도움이 됩니다.