Created SC2270 (markdown)

Vidar Holen
2020-12-30 19:39:25 -08:00
parent e2b6caabb7
commit ab7c6cfa61

52
SC2270.md Normal file

@@ -0,0 +1,52 @@
## To assign positional parameters, use 'set -- first second ..' (or use [ ] to compare).
### Problematic code:
```sh
if [ -z "$1" ]
then
$1="help"
fi
```
or
```sh
if $1="help"
then
echo "Usage: $0 filename"
fi
```
### Correct code:
```sh
if [ -z "$1" ]
then
set -- "help"
fi
```
or
```sh
if [ $1 = "help" ]
then
echo "Usage: $0 filename"
fi
```
### Rationale:
You have a command on the form `$2=value`.
If the goal is to assign a new value to the positional parameters, use the `set` builtin: `set -- one two ..` will cause `$1` to be "one" and `$2` to be "two".
If you instead want to compare the value, use `[ ]` and add spaces: `[ "$1" = "foo" ]`
### Exceptions:
None
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!