Eu suspeito que seu script e seu shell sejam diferentes. Talvez você tenha #!/bin/sh
no topo do seu script como o interpretador, mas está usando bash
como seu shell pessoal. Você pode descobrir qual shell você executa em um terminal executando echo $SHELL
.
Uma maneira mais fácil de fazer isso, que deve funcionar na maioria dos shells, seria usar um redirecionamento de pipe em vez do operador de leitura de arquivo fornecido. O símbolo '-' é uma nomenclatura padrão para leitura de STDIN e pode freqüentemente ser usado como um substituto para um nome de arquivo em uma lista de argumentos:
cat file2 | sort | diff file1 -
Ou para evitar um uso inútil do gato :
sort < file2 | diff file1 -