* [iproute PATCH v2 0/2] Covscan: Shell script fixes
@ 2017-08-17 17:09 Phil Sutter
2017-08-17 17:09 ` [iproute PATCH v2 1/2] examples: Some shell fixes to cbq.init Phil Sutter
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Phil Sutter @ 2017-08-17 17:09 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev
This series collects patches from v1 which deal with programming
mistakes in shell scripts.
No changes to the actual patches, just splitting into smaller series.
Phil Sutter (2):
examples: Some shell fixes to cbq.init
ifcfg: Quote left-hand side of [ ] expression
examples/cbq.init-v0.7.3 | 24 ++++++++++++------------
ip/ifcfg | 2 +-
2 files changed, 13 insertions(+), 13 deletions(-)
--
2.13.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [iproute PATCH v2 1/2] examples: Some shell fixes to cbq.init 2017-08-17 17:09 [iproute PATCH v2 0/2] Covscan: Shell script fixes Phil Sutter @ 2017-08-17 17:09 ` Phil Sutter 2017-08-17 17:09 ` [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression Phil Sutter 2017-08-18 16:12 ` [iproute PATCH v2 0/2] Covscan: Shell script fixes Stephen Hemminger 2 siblings, 0 replies; 7+ messages in thread From: Phil Sutter @ 2017-08-17 17:09 UTC (permalink / raw) To: Stephen Hemminger; +Cc: netdev This addresses the following issues: - $@ is an array, so don't use it in quoted strings - use $* instead. - Add missing quotes to components of [ ] expressions. These are not strictly necessary since the output of 'wc -l' should be a single word only, but in case of errors, bash prints "integer expression expected" instead of "too many arguments". - Use -print0/-0 when piping from find to xargs to allow for filenames which contain whitespace. - Quote arguments to 'eval' to prevent word-splitting. Signed-off-by: Phil Sutter <phil@nwl.cc> --- examples/cbq.init-v0.7.3 | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/cbq.init-v0.7.3 b/examples/cbq.init-v0.7.3 index 1bc0d446f8983..66448d88f0053 100644 --- a/examples/cbq.init-v0.7.3 +++ b/examples/cbq.init-v0.7.3 @@ -532,7 +532,7 @@ cbq_off () { ### Prefixed message cbq_message () { - echo -e "**CBQ: $@" + echo -e "**CBQ: $*" } # cbq_message ### Failure message @@ -560,15 +560,15 @@ cbq_time2abs () { ### Display CBQ setup cbq_show () { for dev in `cbq_device_list`; do - [ `tc qdisc show dev $dev| wc -l` -eq 0 ] && continue + [ "`tc qdisc show dev $dev| wc -l`" -eq 0 ] && continue echo -e "### $dev: queueing disciplines\n" tc $1 qdisc show dev $dev; echo - [ `tc class show dev $dev| wc -l` -eq 0 ] && continue + [ "`tc class show dev $dev| wc -l`" -eq 0 ] && continue echo -e "### $dev: traffic classes\n" tc $1 class show dev $dev; echo - [ `tc filter show dev $dev| wc -l` -eq 0 ] && continue + [ "`tc filter show dev $dev| wc -l`" -eq 0 ] && continue echo -e "### $dev: filtering rules\n" tc $1 filter show dev $dev; echo done @@ -585,7 +585,7 @@ cbq_init () { ### Gather all DEVICE fields from $1/cbq-* DEVFIELDS=`find $1 -maxdepth 1 \( -type f -or -type l \) -name 'cbq-*' \ - -not -name '*~' | xargs sed -n 's/#.*//; \ + -not -name '*~' -print0 | xargs -0 sed -n 's/#.*//; \ s/[[:space:]]//g; /^DEVICE=[^,]*,[^,]*\(,[^,]*\)\?/ \ { s/.*=//; p; }'| sort -u` [ -z "$DEVFIELDS" ] && @@ -593,7 +593,7 @@ cbq_init () { ### Check for different DEVICE fields for the same device DEVICES=`echo "$DEVFIELDS"| sed 's/,.*//'| sort -u` - [ `echo "$DEVICES"| wc -l` -ne `echo "$DEVFIELDS"| wc -l` ] && + [ "`echo "$DEVICES"| wc -l`" -ne "`echo "$DEVFIELDS"| wc -l`" ] && cbq_failure "different DEVICE fields for single device!\n$DEVFIELDS" } # cbq_init @@ -618,7 +618,7 @@ cbq_load_class () { PRIO_MARK=$PRIO_MARK_DEFAULT PRIO_REALM=$PRIO_REALM_DEFAULT - eval `echo "$CFILE"| grep -E "^($CBQ_WORDS)="` + eval "`echo "$CFILE"| grep -E "^($CBQ_WORDS)="`" ### Require RATE/WEIGHT [ -z "$RATE" -o -z "$WEIGHT" ] && @@ -661,7 +661,7 @@ if [ "$1" = "compile" ]; then ### echo-only version of "tc" command tc () { - echo "$TC $@" + echo "$TC $*" } # tc elif [ -n "$CBQ_DEBUG" ]; then @@ -669,13 +669,13 @@ elif [ -n "$CBQ_DEBUG" ]; then ### Logging version of "ip" command ip () { - echo -e "\n# ip $@" >> $CBQ_DEBUG + echo -e "\n# ip $*" >> $CBQ_DEBUG $IP "$@" 2>&1 | tee -a $CBQ_DEBUG } # ip ### Logging version of "tc" command tc () { - echo -e "\n# tc $@" >> $CBQ_DEBUG + echo -e "\n# tc $*" >> $CBQ_DEBUG $TC "$@" 2>&1 | tee -a $CBQ_DEBUG } # tc else @@ -711,8 +711,8 @@ if [ "$1" != "compile" -a "$2" != "nocache" -a -z "$CBQ_DEBUG" ]; then ### validate the cache [ "$2" = "invalidate" -o ! -f $CBQ_CACHE ] && VALID=0 if [ $VALID -eq 1 ]; then - [ `find $CBQ_PATH -maxdepth 1 -newer $CBQ_CACHE| \ - wc -l` -gt 0 ] && VALID=0 + [ "`find $CBQ_PATH -maxdepth 1 -newer $CBQ_CACHE| \ + wc -l`" -gt 0 ] && VALID=0 fi ### compile the config if the cache is invalid -- 2.13.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression 2017-08-17 17:09 [iproute PATCH v2 0/2] Covscan: Shell script fixes Phil Sutter 2017-08-17 17:09 ` [iproute PATCH v2 1/2] examples: Some shell fixes to cbq.init Phil Sutter @ 2017-08-17 17:09 ` Phil Sutter 2017-08-18 9:32 ` David Laight 2017-08-18 16:12 ` [iproute PATCH v2 0/2] Covscan: Shell script fixes Stephen Hemminger 2 siblings, 1 reply; 7+ messages in thread From: Phil Sutter @ 2017-08-17 17:09 UTC (permalink / raw) To: Stephen Hemminger; +Cc: netdev This prevents word-splitting and therefore leads to more accurate error message in case 'grep -c' prints something other than a number. Signed-off-by: Phil Sutter <phil@nwl.cc> --- ip/ifcfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ip/ifcfg b/ip/ifcfg index 083d9df36742f..30a2dc49816cd 100644 --- a/ip/ifcfg +++ b/ip/ifcfg @@ -131,7 +131,7 @@ noarp=$? ip route add unreachable 224.0.0.0/24 >& /dev/null ip route add unreachable 255.255.255.255 >& /dev/null -if [ `ip link ls $dev | grep -c MULTICAST` -ge 1 ]; then +if [ "`ip link ls $dev | grep -c MULTICAST`" -ge 1 ]; then ip route add 224.0.0.0/4 dev $dev scope global >& /dev/null fi -- 2.13.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* RE: [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression 2017-08-17 17:09 ` [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression Phil Sutter @ 2017-08-18 9:32 ` David Laight 2017-08-18 11:24 ` Phil Sutter 0 siblings, 1 reply; 7+ messages in thread From: David Laight @ 2017-08-18 9:32 UTC (permalink / raw) To: 'Phil Sutter', Stephen Hemminger; +Cc: netdev@vger.kernel.org From: Phil Sutter > Sent: 17 August 2017 18:10 > This prevents word-splitting and therefore leads to more accurate error > message in case 'grep -c' prints something other than a number. > > Signed-off-by: Phil Sutter <phil@nwl.cc> > --- > ip/ifcfg | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ip/ifcfg b/ip/ifcfg > index 083d9df36742f..30a2dc49816cd 100644 > --- a/ip/ifcfg > +++ b/ip/ifcfg > @@ -131,7 +131,7 @@ noarp=$? > > ip route add unreachable 224.0.0.0/24 >& /dev/null > ip route add unreachable 255.255.255.255 >& /dev/null > -if [ `ip link ls $dev | grep -c MULTICAST` -ge 1 ]; then > +if [ "`ip link ls $dev | grep -c MULTICAST`" -ge 1 ]; then You could drag all these scripts into the 1990's by using $(...) instead of `...`. David ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression 2017-08-18 9:32 ` David Laight @ 2017-08-18 11:24 ` Phil Sutter 2017-08-18 16:38 ` David Laight 0 siblings, 1 reply; 7+ messages in thread From: Phil Sutter @ 2017-08-18 11:24 UTC (permalink / raw) To: David Laight; +Cc: Stephen Hemminger, netdev@vger.kernel.org On Fri, Aug 18, 2017 at 09:32:52AM +0000, David Laight wrote: > From: Phil Sutter > > Sent: 17 August 2017 18:10 > > This prevents word-splitting and therefore leads to more accurate error > > message in case 'grep -c' prints something other than a number. > > > > Signed-off-by: Phil Sutter <phil@nwl.cc> > > --- > > ip/ifcfg | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/ip/ifcfg b/ip/ifcfg > > index 083d9df36742f..30a2dc49816cd 100644 > > --- a/ip/ifcfg > > +++ b/ip/ifcfg > > @@ -131,7 +131,7 @@ noarp=$? > > > > ip route add unreachable 224.0.0.0/24 >& /dev/null > > ip route add unreachable 255.255.255.255 >& /dev/null > > -if [ `ip link ls $dev | grep -c MULTICAST` -ge 1 ]; then > > +if [ "`ip link ls $dev | grep -c MULTICAST`" -ge 1 ]; then > > You could drag all these scripts into the 1990's by using $(...) > instead of `...`. That's a different kettle of fish IMO, using $() doesn't change the situation this addresses: | $ [ $(echo foo bar) -eq 0 ] && echo ok | bash: [: too many arguments | $ [ "$(echo foo bar)" -eq 0 ] && echo ok | bash: [: foo bar: integer expression expected Cheers, Phil ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression 2017-08-18 11:24 ` Phil Sutter @ 2017-08-18 16:38 ` David Laight 0 siblings, 0 replies; 7+ messages in thread From: David Laight @ 2017-08-18 16:38 UTC (permalink / raw) To: 'Phil Sutter'; +Cc: Stephen Hemminger, netdev@vger.kernel.org From: Phil Sutter > Sent: 18 August 2017 12:24 ... > > > -if [ `ip link ls $dev | grep -c MULTICAST` -ge 1 ]; then > > > +if [ "`ip link ls $dev | grep -c MULTICAST`" -ge 1 ]; then > > > > You could drag all these scripts into the 1990's by using $(...) > > instead of `...`. > > That's a different kettle of fish IMO, using $() doesn't change the > situation this addresses: > > | $ [ $(echo foo bar) -eq 0 ] && echo ok > | bash: [: too many arguments > | $ [ "$(echo foo bar)" -eq 0 ] && echo ok > | bash: [: foo bar: integer expression expected I didn't say it would. IFS= set -o noglob would though - not that I'd suggest it here. protecting the 'eval' is somewhat harder. David ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [iproute PATCH v2 0/2] Covscan: Shell script fixes 2017-08-17 17:09 [iproute PATCH v2 0/2] Covscan: Shell script fixes Phil Sutter 2017-08-17 17:09 ` [iproute PATCH v2 1/2] examples: Some shell fixes to cbq.init Phil Sutter 2017-08-17 17:09 ` [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression Phil Sutter @ 2017-08-18 16:12 ` Stephen Hemminger 2 siblings, 0 replies; 7+ messages in thread From: Stephen Hemminger @ 2017-08-18 16:12 UTC (permalink / raw) To: Phil Sutter; +Cc: netdev On Thu, 17 Aug 2017 19:09:30 +0200 Phil Sutter <phil@nwl.cc> wrote: > This series collects patches from v1 which deal with programming > mistakes in shell scripts. > > No changes to the actual patches, just splitting into smaller series. > > Phil Sutter (2): > examples: Some shell fixes to cbq.init > ifcfg: Quote left-hand side of [ ] expression > > examples/cbq.init-v0.7.3 | 24 ++++++++++++------------ > ip/ifcfg | 2 +- > 2 files changed, 13 insertions(+), 13 deletions(-) > Applied. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-08-18 16:38 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-17 17:09 [iproute PATCH v2 0/2] Covscan: Shell script fixes Phil Sutter 2017-08-17 17:09 ` [iproute PATCH v2 1/2] examples: Some shell fixes to cbq.init Phil Sutter 2017-08-17 17:09 ` [iproute PATCH v2 2/2] ifcfg: Quote left-hand side of [ ] expression Phil Sutter 2017-08-18 9:32 ` David Laight 2017-08-18 11:24 ` Phil Sutter 2017-08-18 16:38 ` David Laight 2017-08-18 16:12 ` [iproute PATCH v2 0/2] Covscan: Shell script fixes Stephen Hemminger
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.