It is the stream itself that is buffered, so the terminal does not handle the contents until the stream is flushed.
Software developer interested into security and sustainability.
- 0 Posts
- 7 Comments
ClemaX@lemm.eeto Technology@lemmy.world•Google To Subscribe To Your Emails To Find Content For Your Search Listings.English61·7 days agoWould you provide a free mail service?
Eval is bad for security boundaries and the string based approach is a pain to develop and maintain. An alternative that is equally bad for security but better for development would be dynamic imports using importlib.
If you want to support custom scripts while enforcing security boundaries, you could use an embeddable interpreter like lua, or create your own.
ClemaX@lemm.eeto Showerthoughts@lemmy.world•X88B88 is the word "voodoo" with a reflection.10·17 days agoE8XIB¹⁹
It all makes sense when you think about the way it will be parsed. I prefer to use newlines instead of semicolons to show the blocks more clearly.
for file in *.txt do cat "$file" done
The
do
anddone
serve as the loop block delimiters. Such as{
and}
in many other languages. The shell parser couldn’t know where stuff starts/ends.Edit: I agree that the
then
/fi
,do
/done
case
/esac
are very inconsistent.Also to fail early and raise errors on uninitialized variables, I recommend to add this to the beginning of your bash scripts:
set -euo pipefail
Or only this for regular sh scripts:
set -eu
-e
: Exit on error-u
: Error on access to undefined variable-o pipefail
: Abort pipeline early if any part of it fails.There is also
-x
that can be very useful for debugging as it shows a trace of every command and result as it is executed.
Yeah I think they mean zero XOR fewer.