Perhaps we're not talking about the same thing.

Let's say for test.sh:
```
#!/bin/bash

DB_HOST=${1:-localhost}
echo $DB_HOST

DB_HOST2=${1:?localhost}
echo $DB_HOST2
```

When I run it with a parameter:

```
$ ./test.sh hello
hello
hello
```

When I run it without a parameter:

```
$ ./test.sh
localhost
./test.sh: line 6: 1: localhost
```

The version with the `?` throws an error with the missing param. The version with the `-` doesn't. 

Unless I'm doing something wrong?