It's dash root@test3:~# ls -l /bin/sh lrwxrwxrwx 1 root root 4 Feb 17 2016 /bin/sh -> dash
Regards, On Wed, Apr 25, 2018 at 6:24 PM, Ben Pfaff <[email protected]> wrote: > On April 25, 2018 8:51:01 PM EDT, aginwala <[email protected]> wrote: >> >> The root cause is ovn-ctl is using sh instead of bash. Parsing works fine >> if we use bash >> >> e.g below is the comparision: >> root@test3:~# cat test.sh >> #!/bin/bash >> aaa="-vconsole:off -vfile:info" >> test(){ >> c="a" >> eval local x=\$a${c}a >> echo 'log values are '$x >> } >> root@test3:~# ./test.sh >> log values are -vconsole:off -vfile:info >> >> #switching to sh >> root@test3:~# cat test.sh >> #!/bin/sh >> aaa="-vconsole:off -vfile:info" >> test(){ >> c="a" >> eval local x=\$a${c}a >> echo 'log values are'$x >> } >> root@test3:~# ./test.sh >> ./test.sh: 1: local: -vfile:info: bad variable name >> >> Shortest way is to skip bash for log and use direct var assignment or >> will try to figure out something that works for both sh and bash using >> eval. Let me know your thoughts on that! >> >> On Wed, Apr 25, 2018 at 2:06 PM, aginwala <[email protected]> wrote: >> >>> >>> >>> On Wed, Apr 25, 2018 at 12:54 PM, Ben Pfaff <[email protected]> wrote: >>> >>>> On Thu, Apr 12, 2018 at 03:40:33PM -0700, aginwala wrote: >>>> > eval doesn't understand white spaces which was introduced in commit >>>> > 79c7961b8b3c4b7ea0251dea2ffacfa84c84fecb for starting clustered ovn >>>> dbs >>>> > >>>> > Hence, we need to explicitely handle it. >>>> > e.g. /usr/share/openvswitch/scripts/ovn-ctl >>>> --db-nb-addr=192.168.220.101 --db-nb-create-insecure-remote=yes \ >>>> > --db-sb-addr=192.168.220.101 --db-sb-create-insecure-remote=yes \ >>>> > --db-nb-cluster-local-addr=192.168.220.101 \ >>>> > --db-sb-cluster-local-addr=192.168.220.101 \ >>>> > --ovn-northd-nb-db=tcp:192.168.220.101:6641,tcp:192.168.220 >>>> .102:6641,tcp:192.168.220.103:6641 \ >>>> > --ovn-northd-sb-db=tcp:192.168.220.101:6642,tcp:192.168.220 >>>> .102:6642,tcp:192.168.220.103:6642 \ >>>> > start_northd >>>> > >>>> > gives error: /usr/share/openvswitch/scripts/ovn-ctl: 1: local: >>>> -vfile:info: bad variable name >>>> > As a result ovsdb failes to even initialize and start. This commit >>>> fixes the same. >>>> > >>>> > Signed-off-by: aginwala <[email protected]> >>>> > --- >>>> > ovn/utilities/ovn-ctl | 4 ++-- >>>> > 1 file changed, 2 insertions(+), 2 deletions(-) >>>> > >>>> > diff --git a/ovn/utilities/ovn-ctl b/ovn/utilities/ovn-ctl >>>> > index 25dda52..9a1ad75 100755 >>>> > --- a/ovn/utilities/ovn-ctl >>>> > +++ b/ovn/utilities/ovn-ctl >>>> > @@ -409,8 +409,8 @@ set_defaults () { >>>> > OVN_CONTROLLER_LOG="-vconsole:emer -vsyslog:err -vfile:info" >>>> > OVN_NORTHD_LOG="-vconsole:emer -vsyslog:err -vfile:info" >>>> > OVN_NORTHD_LOGFILE="" >>>> > - OVN_NB_LOG="-vconsole:off -vfile:info" >>>> > - OVN_SB_LOG="-vconsole:off -vfile:info" >>>> > + OVN_NB_LOG='"-vconsole:off' '-vfile:info"' >>>> > + OVN_SB_LOG='"-vconsole:off' '-vfile:info"' >>>> > OVN_NB_LOGFILE="$logdir/ovsdb-server-nb.log" >>>> > OVN_SB_LOGFILE="$logdir/ovsdb-server-sb.log" >>>> >>>> This doesn't make sense to me. The line >>>> >>>> eval local log=\$OVN_${DB}_LOG >>>> >>>> should parameter-expand to: >>>> >>>> eval local log=$OVN_SB_LOG >>>> >>>> which should be executed as: >>>> >>>> local log=$OVN_SB_LOG >>>> >>>> which should assign "-vconsole:off -vfile:info", without the double >>>> quotes, to $log (since variable assignment in shell doesn't do word >>>> splitting). >>>> >>>> Then, later, >>>> >>>> set "$@" $log --log-file=$logfile >>>> >>>> should do word splitting on $log. >>>> >>>> Do you understand what is going on here? >>>> >>> >>> >>> >>> Hi : >>> >>> Yes for sure. But eval do not understand white spaces in the string >>> "-vconsole:off >>> -vfile:info" which breaks on line local log=$OVN_SB_LOG. set "$@" >>> $log --log-file=$logfile >>> is not even there yet. Hope you got the idea what I mean. Easily >>> reproduced on ubuntu box as I am using ubuntu. >>> >>> >>> >>>> Thanks, >>>> >>>> Ben. >>>> _______________________________________________ >>>> dev mailing list >>>> [email protected] >>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev >>>> >>> >>> >> > What shell is sh on your system? > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
