I have a script on my 11.3 machine which is trying to use a function from file /etc/sysconfig/network/scripts/functions, namely the get ipv4 address. For some reason it does not like line 287 in the file, which is the line beginning with ‘done <’ in the snippet quoted below. Has my functions file become corrupted, and if so what should the line look like? Thanks
get_ipv4address () {
test -z "$1" && return 1
local a b c
while read a b c; do
if "$a" = inet ] ; then
break
fi
done < <(LC_ALL=POSIX ip -4 address list "$1" 2>/dev/null)
test -z "$b" && return 1
echo ${b%%/*}
}
What argument does that function take? Can you give an example of $1?
- OK. I see. Overlooked you were talking about /etc/sysconfig/network/scripts/functions.
Are you trying to source this file to use these functions in your own script?
Sorry, here is my context. I am trying to run a script to start and stop Zoneminder, but I cannot find a direct reference to the function in the startup script, so the reference must be indirect. The result, however, is (for example)
service zm stop
/etc/sysconfig/network/scripts/functions: line 287: syntax error near unexpected token <' /etc/sysconfig/network/scripts/functions: line 287:
done < <(LC_ALL=POSIX ip -4 address list “$1” 2>/dev/null)’
Stopping ZoneMinder: /etc/init.d/zm: line 63: failure: command not found
I can post the full zm script if that is helpful.
That works for me:
#! /bin/bash
. /etc/sysconfig/network/scripts/functions
get_ipv4address eth0
get_ipv4address eth1
Loog at line 63 of /etc/init.d/zm.
Yes, you are right, that snippet works fine. Must be in the zm script somewhere or my installation was faulty.
Thanks for pointing me in a useful direction.