Frustrating Groups loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Frustrating Groups loop
# 1  
Old 07-10-2012
Frustrating Groups loop

I'm trying to list a bunch of users' groups and filter them out to be space delimited like this:
Code:
3610 14
25 2810

Using the "id" command they would look like this:
Code:
uid=39693(user1) gid=14(dev) groups=3610(a_dev),14(dev)
uid-39471(user2) gid=25(testing) groups=2810(prod),25(testing)

I want the script to echo a blank line if the "id" command returns no such user. However, my condition doesn't appear to like my syntax and I've viewed several other links about syntax inside the double brackets and the script will not accept my condition!
Code:
while read i
do
USER_HAS_GROUPS="`id $i`"
USER_LDAP_GROUPS="`id $i | cut -d\= -f4 | sed 's/([^()]*)//g;s/,/ /g'`"
if [[ "$USER_HAS_GROUPS" == *such* ]]
then
echo ""
else
echo $USER_LDAP_GROUPS
fi
done < txt1

I've tried variants such as without the quotes, and quotes around *such*, single brackets, single equals sign, etc. Doesn't that condition mean "if $USER_HAS_GROUPS contains the string "such" anywhere then the condition is true" ?
# 2  
Old 07-11-2012
The "no such user" message is probably being output to stderr to capture it you will need to redirect stderr to stdout like this:
Code:
USER_HAS_GROUPS="`id $i 2>&1`"

Here is another thought, why not examine the return value from the id command something along the lines of this:
Code:
while read i
  if id $i > /dev/null 2>&1
  then
    USER_LDAP_GROUPS="`id $i | cut -d\= -f4 | sed 's/([^()]*)//g;s/,/ /g'`"
    echo $USER_LDAP_GROUPS
  else
     echo "Invalid user $i"
  fi
done < txt1

# 3  
Old 07-11-2012
Quote:
Originally Posted by Chubler_XL
The "no such user" message is probably being output to stderr to capture it you will need to redirect stderr to stdout like this:
Code:
USER_HAS_GROUPS="`id $i 2>&1`"

Here is another thought, why not examine the return value from the id command something along the lines of this:
Code:
while read i
  if id $i > /dev/null 2>&1
  then
    USER_LDAP_GROUPS="`id $i | cut -d\= -f4 | sed 's/([^()]*)//g;s/,/ /g'`"
    echo $USER_LDAP_GROUPS
  else
     echo "Invalid user $i"
  fi
done < txt1

Not only does that kludge not work for me but I don't understand why...it keeps saying "-bash: syntax error near unexpected token `done'". I believe the syntax is correct...there's a while followed by a done, I even put in a "do" just in case. The if statement is properly enclosed with fi...not sure why this is happening but I can't verify your suggestion.
# 4  
Old 07-11-2012
Code:
while read i
do
  if id $i > /dev/null 2>&1
  then
    USER_LDAP_GROUPS="`id $i | cut -d\= -f4 | sed 's/([^()]*)//g;s/,/ /g'`"
    echo $USER_LDAP_GROUPS
  else
     echo "Invalid user $i"
  fi
done < txt1

simple syntax error - missing "do"
This User Gave Thanks to jim mcnamara For This Post:
# 5  
Old 07-11-2012
Quote:
Originally Posted by jim mcnamara
Code:
while read i
do
  if id $i > /dev/null 2>&1
  then
    USER_LDAP_GROUPS="`id $i | cut -d\= -f4 | sed 's/([^()]*)//g;s/,/ /g'`"
    echo $USER_LDAP_GROUPS
  else
     echo "Invalid user $i"
  fi
done < txt1

simple syntax error - missing "do"
I don't understand ! I inserted the "do" before and it still returned an error!
Code:
while read i; do; if id $i > /dev/null 2>$1; then USER_LDAP_GROUPS="`id $i | cut -d\= -f4 | sed 's/([^()]*)//g;s/,/ /g'`"; echo $USER_LDAP_GROUPS; else echo "";fi; done < txt1
-bash: syntax error near unexpected token `;'

Jim yours works - thanks as always. I'm sure it's a syntax error on my part I'm just not readily seeing it. I tried several variations and still got an error.
# 6  
Old 07-11-2012
Quote:
Originally Posted by MaindotC
I don't understand ! I inserted the "do" before and it still returned an error!
Still returned what error?
# 7  
Old 07-11-2012
-bash: syntax error near unexpected token `;'
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Frustrating in splitting text files

Duplicate threads merged Dear all, I have been working with a very large text file manually. I'm ordering how to do this with a script. The gamma should be straightforward: I just want split the text into multiple files. The file name should be "CP1", "TS1 for the second step", "PR1 for... (3 Replies)
Discussion started by: liuzhencc
3 Replies

2. Ubuntu

PPPOE + Ubuntu = Frustrating

Hii everyone, I will be explaining what kind of problem I am having with Ubuntu and PPPOE. I have dual booted my PC with Win 7 and Ubuntu 10.10 Previously, whenever I use to start my ubuntu, internet automatically used to start up.. .no problems. I had created a DSL connection through... (0 Replies)
Discussion started by: zsycho
0 Replies

3. Shell Programming and Scripting

Frustrating error special character <96>

Hiya Folks, Wondering if anybody has ran into this before, it's driving me nuts! Searching on this in the forums didn't turn up anything that was any help. My script is going through a csv file I have, running ksh under Cygwin. The code I have is... REQUEST_TYPE=$(grep REQ $FILES |... (3 Replies)
Discussion started by: jtollefson
3 Replies

4. UNIX for Dummies Questions & Answers

Groups

Must I be in a group? I am using Ubuntu and am the only user on my PC. I know how to change groups but do not see a way to not be in a group. Any help would be appreciated. (2 Replies)
Discussion started by: nthepines
2 Replies

5. UNIX for Dummies Questions & Answers

Frustrating but simple preference question

So I am set up on a new box for work here and I have a frustrating preference issue. Whenever I hit backspace, it deletes a whole word instead of a single character. I understand that this is generally the functionality of hitting ctrl-backspace. I tried googling for a solution and dabbled... (3 Replies)
Discussion started by: jasondj
3 Replies

6. Solaris

groups

1 user in member of 4 groups find file permissions and default group (1 Reply)
Discussion started by: tirupathi
1 Replies

7. Solaris

groups

how to create 1000 users in 1 group (0 Replies)
Discussion started by: tirupathi
0 Replies

8. AIX

Where are my groups

Hello A couple of weeks ago, I added a user to an AIX 5.3 system. I go to add one today, and it appears that when creating a user in smit, I cannot see any groups. No primary groups No Group set No Admin Groups The /etc/group and etc/secuity/group files seem to be intact. I did... (4 Replies)
Discussion started by: mhenryj
4 Replies

9. Shell Programming and Scripting

Frustrating Disk space script

This my frustrating disk space script that is supposed to send me a email whenever the disk space reaches 90% but this has some problem that just would not work ..can anyone please tell me when im going wrong #!/bin/ksh sendemail=-1 space=`df -bhk /users/siebelserver |awk '{print$5}'` echo... (4 Replies)
Discussion started by: vivsiv
4 Replies

10. Linux

Frustrating!

Hi All I have an extremely frustrating problem with my Mandrake 9.1 machine. When I am in KDE no browser at all will resolve hostnames. Networking is fine, as I can reach websites via IP address, however hostnames just don't work! When I conduct 'nslookup' or 'host' queries via the command line,... (2 Replies)
Discussion started by: saabir
2 Replies
Login or Register to Ask a Question

Featured Tech Videos