tentando fazer algumas operações em todos os arquivos do diretório que terminam em .c (arquivos C). O código é:
#!/bin/sh
clear
for file in *
do
if [ $file="*.c" ]
then
echo $file
fi
done
exit 0
não funciona. apenas lista todos os arquivos e diretórios.
Responder1
A condição on if
está malformada, você está apenas verificando se a string $file=*.c
não está vazia. Em vez disso, tente:
#!/bin/sh
clear
for file in *
do
if [ "$file" = "*.c" ]
then
echo "$file"
fi
done
exit 0
Por outro lado, o caractere de codificação '*' neste caso não é funcional, mas é interpretado como uma string.
Tentar:
#!/bin/sh
clear
for file in *.c
do
echo "$file"
done
exit 0
Responder2
Sua instrução de teste não verifica se o sufixo do arquivo é .c
. Ele verifica (na maioria dos casos) se $file
é igual a *.c
, veja test(1)
.
No entanto, se você substituiu sua instrução for para ler
for file in *.c
a instrução for só seria passada para os arquivos que terminam com, .c
então você não precisa mais verificar.
Responder3
Outra forma de revestimento seria o uso de find
:
find . -name "*.c" | xargs echo
Depende do que você realmente deseja fazer com esses arquivos para que isso o ajude.