Во всех известных мне реализациях / версиях csh
:
set condition = a_condition*
совпадает с:
set condition = (a_condition*)
То есть он создает массив, содержащий все имена файлов, полученные в результате расширения a_condition *
glob. Я проверил оригинальную реализацию csh
1979 года в 2BSD на эмуляторе PDP11, и там было то же самое.
Описанное вами поведение выглядит так, как если бы эта строка была интерпретирована как
set condition = a_condition1 a_condition2 a_condition3...
, то есть определение условия
как переменной со значением a_condition1
и переменной с именем a_condition2
, затем - a_condition3
... Я не знаю ни одной реализации csh
, которая ведет себя подобным образом, и считаю маловероятным, что такая реализация существует, учитывая, что исходный реализация этого не сделала, но в случае, если это так, вы можете попробовать сделать:
set condition = (a_condition*)
, чтобы увидеть, имеет ли это значение. Это также было бы более информативным.
В любом случае, если вы хотите, чтобы этот глобус был расширен во время присваивания, а цикл перебирал элементы, синтаксис должен быть следующим:
set condition = (a_condition*)
foreach i ($condition:q)
echo $i:q
end
И если вы хотите, чтобы условие
выполнялось содержат строку a_condition *
и эту строку, которая будет расширена как глобус во время цикла, это будет:
set condition = 'a_condition*'
foreach i ($condition)
echo $i:q
end