${1:--}
expandirá para a string "-" se não houver um parâmetro ou se o parâmetro estiver vazio.
Portanto, ./test.sh ""
retornará a string "-", assim como o comando ./test.sh
Isso é considerado um padrão útil em muitas circunstâncias, onde um argumento de "-" pode significar stdin
ou stdout
. Também garante que os scripts não sejam quebrados quando um parâmetro não for definido explicitamente.