Python as a shell replacement
Python as a shell replacement
Posted Dec 13, 2019 17:23 UTC (Fri) by BenHutchings (subscriber, #37955)In reply to: Python as a shell replacement by marcH
Parent article: Creating Kubernetes distributions
I also use "set -e" by habit, but it doesn't do exactly what you probably want. When you check the result of a command, that completely suppresses its effect inside the command. For example:
set -e f() { false echo "continued" } f || echo "failed"prints:
continued
Posted Dec 13, 2019 22:59 UTC (Fri)
by marcH (subscriber, #57642)
[Link] (1 responses)
Some influent and vocal experts seem to have decided that, short of catching "all errors", catching "no error" is better than "many errors". I've read all their essays and I still couldn't make sense of their logic https://mywiki.wooledge.org/BashFAQ/105
"Works for us".
PS: besides 105 and a couple others, https://mywiki.wooledge.org/BashFAQ is the best.
Posted Dec 14, 2019 0:08 UTC (Sat)
by karkhaz (subscriber, #99844)
[Link]
I occasionally use a combined shell script/makefile if I care about catching errors on each command: This prints out everything below and including "makefile_starts_here" to a Makefile and then runs make on it, executing the commands one at a time. This is especially nice if I want built-in parallelism etc, it's actually even better than just using the shell (just ensure to print out "MAKEFLAGS=-j" at the top of the file).
Python as a shell replacement
Python as a shell replacement
#!/bin/sh
# vim:set syntax=make:set ft=make:
MAKEFILE_START_LINE=$(\
grep -nre makefile_starts_here "$0" \
| tail -n 1 \
| awk -F: '{print $1}')
TMP=$(mktemp)
tail -n+${MAKEFILE_START_LINE} "$0" > "${TMP}"
make -f "${TMP}"
SUCCESS=$?
rm -f "$TMP"
exit "$SUCCESS"
makefile_starts_here:
command-1
command-2
command-3