Bash script fails with "function: not found" error
Hello everyone,
I am having problems figuring this out.
This script below is supposed to create a list of file names with their "md5sum", in a file "lib-list.txt"
When I run it "sh component-list.sh " I get this:
component-list.sh: 4: component-list.sh: function: not found
component-list.sh: 5: local: not in a function
Interestingly, I have run it in debug mode and it populated the said text file with a list of lib files
Am running it on Debian 7.
Here is the script:
Code:
#!/bin/bash
cd /usr/local/activemq
function list_dir {
local path=$1
local level=$2
file=$3
#echo $path
#echo $level
if [ $level -gt 2 ];then return;fi
for i in `ls $path`
do
local line=""
for n in `seq 0 $level`
do
line+="\x20\x20"
done
if [ `echo $i | grep -E "\.zip$|\.jar$"` ]
then
md=`md5sum $path/$i | awk '{print $1}'`
echo -e $line${i##*/}"\x20\x20\x20\x20"$md >> "./$file"
fi
done
for i in `ls $path`
do
local line=""
for n in `seq 0 $level`
do
line+="\x20\x20"
done
if [ -d $path/$i ]
then
echo -e $line${i##*/} >> $file
list_dir $path/$i $[level+1] $file
fi
done
}
rm lib-list.txt
echo -e "lib" >> lib-list.txt
list_dir ./lib 0 lib-list.txt
Can someone help me out please.
Last edited by joemb; 10-10-2013 at 10:48 AM..
Reason: had made a major omission
I need to take a string (stringA) check it for spaces and replace any spaces found with an equal (=) sign.
This is not working. There are spaces between each component:
$StringA | tr "" ""
The error returned is:
test: Specify a parameter with this command
Can you help? (3 Replies)
Hi.
i have written a wrapper script which inturn call the ftp child script in it. Now the problem is when i executing the same script in my script directory through putty it is getting executed successfully;where as through telnet i get an error "scripts not found" Can some one help me...
... (1 Reply)
In all of my brief and superficial experience with Unix or Linux, the one curious and consistent thing has been that 'cd ./' (back up one directory level) has done absolutely nothing in any of them. Now I understand that, at least for bash, 'cd ./' appears to have been substituted by 'cd ..'
Am... (1 Reply)
Hi,
I am using following code to send an e-mail with attachment and body.
echo "To: user1@mail.com,user2@mail.com" > mail.tmp
echo "Cc: user3@mail.com,user4@mail.com" >> mail.tmp
echo "From: group@mail.com" >> mail.tmp
echo "Subject: my report" >> mail.tmp
echo "please see as attached"... (6 Replies)
In solaris, I am using a bash script which includes the following variable declaration. The script executes successfully on the command line, but when executed through the cron, I receive a "not found" error.
amt="`echo "scale=3;$numerator/$base*100" |bc |cut -d. -f1`"
Here is the output from... (9 Replies)
Hello Geeks,
Greetings...I have the following script:
#!/usr/bin/bash
#Script to generate number of active PDP context & calculate PDP activation #failurefrom EPG-M
#Script written by Gbenga Adigun
#September 12, 2013
username="xxxxxx"
password="xxxxxxxxx"
HOSTS=(
ggsn01... (6 Replies)
Hi All,
I'm completely new to bash scripting and still learning my way through albeit vey slowly.
I need to know where to insert my server names', my ip address numbers through out the script alas to no avail.
I'm also searching on how to save .sh (bash shell) script properly.... (25 Replies)
Hello.
System : opensuse leap 42.3
I have a bash script that build a text file.
I would like the last command doing :
print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt
where :
print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
LEARN ABOUT OPENDARWIN
systemd.environment-generator
SYSTEMD.ENVIRONMENT-GENERATOR(7) systemd.environment-generator SYSTEMD.ENVIRONMENT-GENERATOR(7)NAME
systemd.environment-generator - systemd environment file generators
SYNOPSIS
/lib/systemd/system-environment-generators/some-generator
/usr/lib/systemd/user-environment-generators/some-generator
/run/systemd/system-environment-generators/*
/etc/systemd/system-environment-generators/*
/usr/local/lib/systemd/system-environment-generators/*
/lib/systemd/system-environment-generators/*
/run/systemd/user-environment-generators/*
/etc/systemd/user-environment-generators/*
/usr/local/lib/systemd/user-environment-generators/*
/usr/lib/systemd/user-environment-generators/*
DESCRIPTION
Generators are small executables that live in /lib/systemd/system-environment-generators/ and other directories listed above. systemd(1)
will execute those binaries very early at the startup of each manager and at configuration reload time, before running the generators
described in systemd.generator(7) and before starting any units. Environment generators can override the environment that the manager
exports to services and other processes.
Generators are loaded from a set of paths determined during compilation, as listed above. System and user environment generators are loaded
from directories with names ending in system-environment-generators/ and user-environment-generators/, respectively. Generators found in
directories listed earlier override the ones with the same name in directories lower in the list. A symlink to /dev/null or an empty file
can be used to mask a generator, thereby preventing it from running. Please note that the order of the two directories with the highest
priority is reversed with respect to the unit load path, and generators in /run overwrite those in /etc.
After installing new generators or updating the configuration, systemctl daemon-reload may be executed. This will re-run all generators,
updating environment configuration. It will be used for any services that are started subsequently.
Environment file generators are executed similarly to unit file generators described in systemd.generator(7), with the following
differences:
o Generators are executed sequentially in the alphanumerical order of the final component of their name. The output of each generator
output is immediately parsed and used to update the environment for generators that run after that. Thus, later generators can use
and/or modify the output of earlier generators.
o Generators are run by every manager instance, their output can be different for each user.
It is recommended to use numerical prefixes for generator names to simplify ordering.
EXAMPLES
Example 1. A simple generator that extends an environment variable if a directory exists in the file system
# 50-xdg-data-dirs.sh
#!/bin/bash
# set the default value
XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share/:/usr/share}"
# add a directory if it exists
if [[ -d /opt/foo/share ]]; then
XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS}
fi
# write our output
echo XDG_DATA_DIRS=$XDG_DATA_DIRS
Example 2. A more complicated generator which reads existing configuration and mutates one variable
# 90-rearrange-path.py
#!/usr/bin/env python3
"""
Proof-of-concept systemd environment generator that makes sure that bin dirs
are always after matching sbin dirs in the path.
(Changes /sbin:/bin:/foo/bar to /bin:/sbin:/foo/bar.)
This generator shows how to override the configuration possibly created by
earlier generators. It would be easier to write in bash, but let's have it
in Python just to prove that we can, and to serve as a template for more
interesting generators.
"""
import os
import pathlib
def rearrange_bin_sbin(path):
"""Make sure any pair of .../bin, .../sbin directories is in this order
>>> rearrange_bin_sbin('/bin:/sbin:/usr/sbin:/usr/bin')
'/bin:/sbin:/usr/bin:/usr/sbin'
"""
items = [pathlib.Path(p) for p in path.split(':')]
for i in range(len(items)):
if 'sbin' in items[i].parts:
ind = items[i].parts.index('sbin')
bin = pathlib.Path(*items[i].parts[:ind], 'bin', *items[i].parts[ind+1:])
if bin in items[i+1:]:
j = i + 1 + items[i+1:].index(bin)
items[i], items[j] = items[j], items[i]
return ':'.join(p.as_posix() for p in items)
if __name__ == '__main__':
path = os.environ['PATH'] # This should be always set.
# If it's not, we'll just crash, we is OK too.
new = rearrange_bin_sbin(path)
if new != path:
print('PATH={}'.format(new))
Example 3. Debugging a generator
SYSTEMD_LOG_LEVEL=debug VAR_A=something VAR_B="something else"
/lib/systemd/system-environment-generators/path-to-generator
SEE ALSO systemd-environment-d-generator(8), systemd.generator(7), systemd(1), systemctl(1)systemd 237SYSTEMD.ENVIRONMENT-GENERATOR(7)