[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Echoing commands
From: |
Angelo Borsotti |
Subject: |
Echoing commands |
Date: |
Wed, 12 Jun 2024 19:31:13 +0200 |
Hi,
I am running bash 5.2.15(3)-release (x86_64-pc-cygwin) on
cygwin running on Windows 10.
Bash lacks a proper way of echoing commands, which is
present in other shells, even in ones which are much less
powerful, like, e.g. Windows CMD.
This is not the same as debugging, for which set -x is devoted.
"set -x" makes the ensuing commands be printed, but prefixed
with "+ ", which makes the result look ugly, not to mention that
the following "set +x" is echoed too (there are hacks to suppress
the "set +x" output, but they are just hacks).
What is needed is something equivalent to the @echo on, @echo off
of the old DOS CMD, that are not printed and that enable/disable
echoing of commands without any debugging marks added (such as
"+" of set -x).
The solution could look like:
set -o log
cat tmp >tmp1 # or any other command
set -o nolog
producing the output on the console
cat tmp >tmp1
I would stress the importance of this: the purpose of scripts is
to execute commands, informing the caller of what they execute,
purged of all the builtins and other calculations the script does
in order to come to the commands.
Many solutions are posted in the internet, all of them are hacks with
lots of edge cases that make them fail in presence of commands
containing special characters, redirections, substitutions, etc.
Thank you
-Angelo Borsotti
- Echoing commands,
Angelo Borsotti <=
Re: Echoing commands, Koichi Murase, 2024/06/12