[arch-projects] [initscripts] Incorrect environment variable checks in sysinit & co?

Dave Reisner d at falconindy.com
Thu Mar 31 19:54:17 EDT 2011


On Fri, Apr 01, 2011 at 01:35:18AM +0200, Rémy Oudompheng wrote:
> On 2011/4/1 Dave Reisner <d at falconindy.com> wrote:
> > 1) Word split /proc/cmdline into an array and use in_array from
> > /etc/rc.d/functions:
> >
> > kern_cmdline=($(< /proc/cmdline))
> > if in_array "${kern_cmdline[@]}" verbose; then
> >  ...
> >
> > 2) Word split /proc/cmdline with printf and use grep -x:
> >
> > if printf "%s\n" $(</proc/cmdline) | grep x 'verbose'; then
> >  ...
> >
> 
> These look very strange. I would be more tempted to inline the in_array and say:
> 
> /bin/dmesg -n 3
> for cmdlinearg
> do
>     [[ $cmdlinearg == "verbose" ]] && /bin/dmesg -n 8
> done
> 
> which seems more readable and less magical to me.
> 
> Rémy.

Sure, also valid. It occurred to me that the array isn't actually
necessary, as you can just word split in passing to in_array but
inlining here is fine too.

one minor nit to pick with the innards of your loop...

  [[ $arg = "verbose" ]] && { /bin/dmesg -n 8; break; }

dave

p.s. particularly as of late, I've found that "readable" is highly
subjective, particularly when it comes to Bash.



More information about the arch-projects mailing list