Você provavelmente quis dizer !~
, "não corresponde à expressão regular", em vez de !=
, "não é igual a".
Para $var =~ regexp
e $var !~ regexp
, o padrão à direita não deve ser citado. Para ==
e !=
, você pode citar a parte à direita (e de fato eu encorajaria isso).
Como !=
espera uma string, " [yY]
não foi analisado como uma expressão regular. Em vez disso, o shell expandiu para" qualquer arquivo cujo nome seja y
ou Y
". E como você não o fez t tem um, a casca reclamou.
Esse tipo de coisa, a propósito, é por isso que eu prefiro não escrever scripts no tcsh, mesmo que eu use como meu shell interativo.