Created SC3008 (markdown)

Vidar Holen
2022-11-02 20:45:58 -07:00
parent 6c5f84ee29
commit 0b7b9e562d

39
SC3008.md Normal file

@@ -0,0 +1,39 @@
## In POSIX sh, select loops are undefined.
### Problematic code:
```sh
#!/bin/sh
echo "Select file to show"
select input in *
do
ls -l "$input"
done
```
### Correct code:
Either switch to bash:
```sh
#!/usr/bin/env bash
echo "Select file to show"
select input in *
do
ls -l "$input"
done
```
Or write your own menu.
### Rationale:
Your script uses a shell feature not supported by the shebang. Either rewrite the script to be portable, or change the shebang to explicitly require a shell like Bash. There is no simple substitution for a `select` loop, so either write your own using compatible constructs like `for` loops, or switch to a shell that supports them.
### Exceptions:
None
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!