[ $i = "*f*" ]
divide o nome do arquivo armazenado na variável i
em palavras separadas em espaços, interpreta cada palavra como um padrão curinga e a expande se corresponder e, em seguida, analisa a lista de palavras resultante como uma condição para% código%. Para evitar essa ladainha e, em vez disso, usar o nome do arquivo, colocam aspas duplas em torno da expansão da variável .
[ … ]
testa se o nome do arquivo na variável [ "$i" = "*f*" ]
é o nome de três caracteres i
. Se você não tiver um arquivo com esse nome, todos os arquivos dispararão o ramo else, então *f*
é impresso.
Em ksh, bash ou zsh, você pode testar se uma string corresponde a um padrão curinga usando a construção de colchete duplo. Deixe os curingas no padrão sem aspas.
if [[ "$i" = *f* ]]; then …
Em sh simples, não há sintaxe de colchetes duplos. Para testar se uma string corresponde a um padrão, você pode usar uma construção yes
.
case "$i" in
*f*) echo "no";;
*) echo "yes";;
esac