Em todas as implementações / versões de csh
que conheço:
set condition = a_condition*
é o mesmo que:
set condition = (a_condition*)
Isso cria um array contendo todos os nomes de arquivos resultantes da expansão do a_condition*
glob. Eu verifiquei com a implementação original de 1979 csh
no 2BSD em um emulador PDP11, e foi o mesmo lá.
O comportamento que você descreve parece que a linha foi interpretada como
set condition = a_condition1 a_condition2 a_condition3...
Ou seja, definindo condition
como uma variável com valor a_condition1
e uma variável chamada a_condition2
, então uma chamada a_condition3
... Não conheço nenhuma implementação csh
que se comporta desse modo e eu acharia improvável que tal implementação existisse, dado que a implementação original não funcionou, mas no caso, você pode tentar:
set condition = (a_condition*)
para ver se isso faz diferença. Isso também seria mais auto-descritivo.
Em qualquer caso, se você quiser que o glob seja expandido no momento da atribuição e o loop faça um loop pelos elementos, a sintaxe deve ser:
set condition = (a_condition*)
foreach i ($condition:q)
echo $i:q
end
E se você quiser que condition
contenha a a_condition*
string , e que a string seja expandida como uma glob no momento do loop, isso seria:
set condition = 'a_condition*'
foreach i ($condition)
echo $i:q
end