尝试对目录中以 .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
这取决于您实际想要对这些文件执行的操作,以便这对您有所帮助。