Embora eu ache estranho que você esteja comparando uma variável com algo que você apenas define, a questão principal é que você está usando um operador de comparação numérica (-ne)
para o que é esperado para ser um nome de arquivo (de texto). Em vez disso, use:
if [ "$filename" != "$1" ]
... onde eu também citou suas variáveis .
O bônus aponta para o comentário da steeldriver , o que me levou a olhar um pouco mais sobre isso.
Com base em meus testes, acredito que o ksh veja o operador de comparação ne
numérico e esteja realizando uma rodada de variáveis & expansão aritmética nos dois operandos $filename
e $1
. Como tal, $filename
se transforma em test.txt
, que o ksh reconhece como um possível compound variable
. Como test
não está definido, você recebe o erro test.txt: no parent
.