39 lines
825 B
Markdown
39 lines
825 B
Markdown
+++
|
|
+++
|
|
|
|
## why?
|
|
lets take this script:
|
|
|
|
```bash
|
|
rm -fr data.json
|
|
curl https://url.com/data.json -o data.json
|
|
```
|
|
|
|
the problem here is that `curl` might not be installed on second line, but the data is already deleted.
|
|
|
|
it will result in `data.json` being irreparably deleted and no way to reinstall it
|
|
|
|
## solution
|
|
you could write up something like this and put it in the start:
|
|
|
|
```sh
|
|
if ! command -v curl; then
|
|
echo no curl!
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
but that's just not reliable and barely maintainable. so that's why i made this thing.
|
|
|
|
you can use it like this:
|
|
|
|
```sh
|
|
# program.sh
|
|
#!/usr/bin/env bash
|
|
curl https://url.com
|
|
```
|
|
|
|
then compile it like that: `bshchk program.sh dist.sh`.
|
|
|
|
also you can read the script from stdin: `cat program.sh | bshchk - dist.sh`, or get the output to stdout: `bshchk program.sh > dist.sh`
|