[ClusterLabs] Antw: Re: Antw: Need bash instead of /bin/sh

Ken Gaillot kgaillot at redhat.com
Wed Sep 23 14:56:18 UTC 2015


On 09/23/2015 08:38 AM, Ulrich Windl wrote:
>>>> Vladislav Bogdanov <bubble at hoster-ok.com> schrieb am 23.09.2015 um 15:24 in
> Nachricht <5602A808.1090108 at hoster-ok.com>:
>> 23.09.2015 15:42, dan wrote:
>>> ons 2015-09-23 klockan 14:08 +0200 skrev Ulrich Windl:
>>>>>>> dan <dan.oscarsson at intraphone.com> schrieb am 23.09.2015 um 13:39 in Nachricht
>>>> <1443008370.2386.8.camel at intraphone.com>:
>>>>> Hi
>>>>>
>>>>> As I had problem with corosync 2.3.3 and pacemaker 1.1.10 which was
>>>>> default in my version of ubuntu, I have now compiled and installed
>>>>> corosync 2.3.4 and pacemaker 1.1.12.
>>>>>
>>>>> And now it works.
>>>>>
>>>>> Though the file /usr/lib/ocf/resource.d/pacemaker/controld
>>>>> does not work as /bin/sh is linked to dash on ubuntu (and I think
>>>>> several other Linux variants).
>>>>>
>>>>> It is line 182:
>>>>>              local addr_list=$(cat
>>>>> /sys/kernel/config/dlm/cluster/comms/*/addr_list 2>/dev/null)
>>>>
>>>> That looks like plain POSIX shell to me. What part is causing the problem?
>>>
>>> Did a small test:
>>> ---------------test.sh----------------
>>> controld_start() {
>>>      local addr_list=$(echo AF_INET 10.1.1.1 AF_INET 10.1.1.2)
>> yep, that is a bashism.
>>
>> posix shell denies assignment of local variables in the declaration.
> 
> In times of BASH it's hard to get POSIX shell documentation. The last we had was from HP-UX. But the problem seems to be more $() than assignment it seems.

Good catch, thanks. I'll submit a patch upstream.

>>
>> local addr_list; addr_list=$(echo AF_INET 10.1.1.1 AF_INET 10.1.1.2)
>>
>> should work
>>
>>>      echo $addr_list
>>> }
>>>
>>> controld_start
>>> --------------------------------------
>>>
>>> dash test.sh
>>> test.sh: 2: local: 10.1.1.1: bad variable name
>>>
>>> bash test.sh
>>> AF_INET 10.1.1.1 AF_INET 10.1.1.2
>>>
>>>
>>>      Dan
=




More information about the Users mailing list