Eval occured to me because when I trace the output ( bash -x ) I get results like this: DN_COUNT[$NAME]=98 or DN_COUNT[$NAME]=1007 and so on. So of course eval then gives me the desired result. I'm not saying your wrong, but I just don't see how the mangling is occuring.
If your code's as you post it, it has to have occurred somewhere, but if it's not, other problems are possible.
Could you have done '$NAME' instead of "$NAME" ? That definitely will not work, and eval definitely would have "fixed" it. Using double quotes is the better answer of course.
Quote:
Also I did write the whole thing from scratch
What is the -d '\0' for?
Quote:
I tend to use the named pipes to feed with the null delimiter because I know C strings are terminated that way which allows for crazy characters
That's a no-op unless your input actually has nulls, and yours doesn't.
Quote:
and the named pipe always avoids subshells which tend to trip me up.
That's a consideration when using read to dump large lists of things into arrays and variables. But you may not need an array at all.
That if [ $? ] doesn't do what you think it does. It's only checking the very last loop, not any of the ones before. You can replace the whole thing with one mkdir call, anyway:
mkdir has -p which will replace most of your function:
Same problem here, your $? doesn't do what you think it does, you could have used if directly, and chown can accept multiple names anyway.
If your ldap permissions are changing all the time, it might be a good idea to find what's doing so...
Never, ever use kill -9 as anything but a last resort. You have to ask it to stop, wait, kill it politely, wait, kill it less politely, wait, and if it doesn't die, THEN you can murder it:
Why not cut out the middleman and just call ldap_repair, ldap_testdb, etc functions instead of setting variables?
You can put this in one call:
And once again, you really shouldn't be shoving the output of ls -l into variables. For one thing its redundant, and for another, did you know that if you turn off the -l, you won't need awk '{ print $9 }' ? For a third thing, the print $9 trick breaks down when filenames have spaces in them, which is a problem you seem to want to avoid.
Hey guys I added most of your suggestions and it works great.
I just now realized the beauty of that grep pipe. I can simply use it to find the highest DN count file from the get go, which is the ultimate goal anyway.
I still need to fix the case statement and substitute a 0 in case the either one of the get_ldif comparison variables are empty. I will add and test that shortly.
Last edited by Riker1204; 09-30-2017 at 02:54 PM..
Now, with your nice set of functions, why don't you stay with those, i.e. write a "repair" , a "restore" etc. function and just call those in the case statement?
EDIT: For your get_ldif, how about something like
The problem with empty variables will arise if files aren't found or directories are empty, i.e. grep fails. In this case, check for the exit code, deploy the shell's "parameter expansion - use default value", or use a trick like adding a "0" upfront:
As this is not an "arithmetic evaluation", no problem with "leading 0 are interpreted as octal numbers" should occur. Should your shell interpret the values as octal values (mine didn't), add a base descriptor like "10#".
Hi RudiC, that's exactly the plan. And I like that read function, very concise. My only point of consternation was I've never used functions inside other functions in bash, but I'm assuming there is no issue correct?
I have to "time slice" between various projects and when I make a change to the script I have to test every logical case that it works (I'm usually good for a typo or two) because my co -workers may have to use it when I'm not there, and it if doesn't work they have no idea about LDAP. No biggie for me as I can do it manually. Point being I will have to implement it when I get a little bit more time.
Hello together,
i make something wrong... I want an array that contains information to associate it for further processing.
Here is something from my bash... You will know, what I'm trying to do.
I have to point out in advance, that the variable $SYSOS is changing and not as static as in my... (2 Replies)
Continuing my quest to learn BASH, Bourne, Awk, Grep, etc. on my own through the use of a few books. I've come to an exercise that has me absolutely stumped.
The specifics:
1. Using ONLY BASH scripting commands (not sed, awk, etc.), write a script to convert a string on the command line to... (22 Replies)
Hi all
I have a problem where i have a large list ( up to 1000 of items) and need to have 2 items pulled from it into variables in a bash script
my list is like the following and I could have it as an array or possibly an external text file maintained separately. Every line is different and... (6 Replies)
I have an associative array named table
declare -A table
table="fruit"
table="veggie"
table="GT"
table="eminem"
Now say I have a variable returning the value highway
How do I find corresponding value GT ??
(this value that I find (GT in this case) is supposed to be the name of a mysql... (1 Reply)
Hi
Input:
{ committed = 782958592; init = 805306368; max = 1051394048; used = 63456712; }
Result:
A map (maybe Associative Array) where I can iterate through the key/value. Something like this:
for key in $map
do
echo key=$key value=$map
done
Sample output from the map:
... (2 Replies)
Hi All,
I got stuck up with shell script where i use awk. The scenario which i am working on is as below.
I have a file text.txt with contents
COL1 COL2 COL3 COL4
1 A 500 400
1 B 500 400
1 A 500 200
2 A 290 300
2 B 290 280
3 C 100 100
I could able to sum col 3 and col4 based on... (3 Replies)
brothers why inode index starts from 1 unlike array inex which starts from 0
its a question from the design of unix operating system of maurice j.bach
i need to know the answer urgently...someone help please (1 Reply)
why do inode indices starts from 1 unlike array indexes which starts from 0
its a question from "the design of unix operating system" of maurice j bach
id be glad if i get to know the answer quickly
:) (0 Replies)
Hi,
When using sort on an associative array:
foreach $key (sort(keys(%opalfabet))){
$value = $opalfabet{$key};
$result .= $value;
}
How does it handle double values?
It seems to me that it removes them, is that true? If so, is there a way to get... (2 Replies)
Hi,
I am trying to make an associative array to use in a popup_menu on a website. Here is what i have:
foreach $entr ( @entries )
{
$temp_uid = $entr->get_value(uid);
$temp_naam = $entr->get_value(sn);
$s++;
}
This is the popup_menu i want to use it in.
popup_menu(-name=>'modcon',... (4 Replies)