[PATCH] CTDB scripting clean-ups and shellcheck tests
Amitay Isaacs
amitay at gmail.com
Wed Jul 20 04:52:34 UTC 2016
On Tue, Jul 19, 2016 at 7:21 AM, Martin Schwenke <martin at meltin.net> wrote:
> On Tue, 19 Jul 2016 06:42:13 +1000, Martin Schwenke <martin at meltin.net>
> wrote:
>
> > On Mon, 18 Jul 2016 22:03:45 +1000, Martin Schwenke <martin at meltin.net>
> > wrote:
> >
> > > On Mon, 18 Jul 2016 22:02:40 +1000, Martin Schwenke <martin at meltin.net
> >
> > > wrote:
> > >
> > > > A small bunch of shellcheck fixes to CTDB's scripts went in recently.
> > > > Following that I did a few more clean-ups. Then Amitay and I decided
> > > > that we might as well go all the way, get rid of all shellcheck
> > > > warnings and add some tests to make sure the scripts stay that way.
> > > >
> > > > Attached are initial clean-ups. This is part 1 - I'm splitting this
> to
> > > > try to avoid message moderation limits.
> > > >
> > > > 2 replies to follow:
> > > >
> > > > * Part 2 - A series of commits to avoid shellcheck warnings
> > > > * Part 3 - Addition of CTDB shellcheck test suite
> > > >
> > > > These can be applied on top of master in order.
> > > >
> > > > Please review and maybe push...
> > >
> > > Part 2. Cleans up all warnings generated by shellcheck 0.3.7.
> >
> > Please don't push. Despite a lot of prior testing, I made a late change
> > yesterday and introduced a bug here that only occurs in some
> > shells. :-(
> >
> > Will repost.
>
> Attached.
>
> The difference is in:
>
> [PATCH 20/23] ctdb-scripts: Avoid shellcheck warning SC2059 ($ in
> printf format)
>
> This hunk:
>
> diff --git a/ctdb/tools/ctdb_natgw b/ctdb/tools/ctdb_natgw
> index 9661cae..448d005 100755
> --- a/ctdb/tools/ctdb_natgw
> +++ b/ctdb/tools/ctdb_natgw
> @@ -148,7 +148,15 @@ nodes_list ()
> if [ "$_ip" = "$_master_ip" ] ; then
> _options="MASTER${_options:+,}${_options}"
> fi
> - printf "${_ip}${_options:+\t}${_options}\n"
> + # There is no other way to do this and keep shellcheck happy.
> + # The tab character must be in the format string and the
> + # format string must contain no variables. Some shells will
> + # expand a tab if it is in an argument but others won't.
> + if [ -n "$_options" ] ; then
> + printf "%s\t%s\n" "$_ip" "$_options"
> + else
> + echo "$_ip"
> + fi
> done <<EOF
> $natgw_nodes
> EOF
>
> Now with shiny comment explaining why it must be so! :-)
>
> This is essentially a revert to a previous version I had.
>
> I am annoyed at myself because I was previously bitten by moving the
> "\t" out of the format string and into an argument. However, I didn't
> remember this yesterday and broke it again... :-(
>
> peace & happiness,
> martin
>
Pushed to autobuild.
Amitay.
More information about the samba-technical
mailing list