Sponsored Content
Top Forums Shell Programming and Scripting Need assistance with bash function Post 302172830 by _jade_ on Tuesday 4th of March 2008 07:43:51 PM
Old 03-04-2008
Need assistance with bash function

Hi all!

I need a little help with an imbedded fuction I am trying to write. What I am trying to do is go to a series of hosts and get the contents of an XML file, storing some of the data, along with the name of the host it was gathered from. My intent is to store this in an array for later use in the script, but I am having some issues getting the values I am looking for stored in a variable


Assumptions

PHYSICALS_FILE contains entries for hostnames
hosta
hostb
etc

Inventory.xml contains lots of stuff. I am only concerned about the 5th field on lines matching vmxCfgPath

The problem I am having is when I am trying to store the values from the "cat" line into a variable for later use. I have tried defining this line as a variable, but I think there is either an issue with defining a variable in a for loop, or something is happening when I use the pipe (|).... (see the commented out lines)

The output this gives me thus far is:

hosta
vm_number1
vm_number2
hostb
vm_number1
vm_number2
etc

What I would like to get the output to be is

hosta,vm_number1
hosta,vm_number2
hostb,vm_number1
hostb,vm_number2
etc

any insight you can offer would be greatly appreciated!!



here is my snippit (I am sure there is a better way to get this, but this works for the most part)

Code:
#!/bin/bash
PROG=`basename $0`
PHYSICALS_FILE=$1
determine_phys ()   {


exec 3< $PHYSICALS_FILE
until [ $DONE ]; do
   read <&3 LINE
   if [[ $? != 0 ]]; then
      DONE=1
      continue
   fi
echo $LINE
   if [[ $? = 0 ]]; then
     sudo ssh $LINE <<EOF
        echo $LINE
        cat /path/to/file/vminventory.xml | grep vmxCfgPath |awk -F"/" '{print $5}'
        #VM=`cat /path/to/file/vminventory.xml | grep vmxCfgPath |awk -F"/" '{print $5}'`
        #echo $LINE,$VM
	echo "___________________________________________"
        exit
EOF
   fi
done
}

determine_phys

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need help in using power function in Bash

Hi, I would like to use a power function in Bash in an awk '{ } . e.g pow(2,3)=8 Any suggestion? I try to find online resources but most of them stated by using BC. Please advise. Thanks. (3 Replies)
Discussion started by: ahjiefreak
3 Replies

2. Shell Programming and Scripting

bash search function

I want to have a function with a similar interface: search *.cpp asdf that will search recursively all directories for *.cpp file, containing line 'asdf' inside. I tried this: function search { find . -name "$1" | xargs grep -li $2; } But it doesn't work all the time. For example, if i run it... (3 Replies)
Discussion started by: doze
3 Replies

3. Shell Programming and Scripting

BASH function error

Hey everyone. I am currently testing my first function based BASH script. The ultimate goal is going to be moving logs from point A to point B (or if B is down, to point C). Part of this involves the following function: function testAlive{ ping -c 1 -q $1 } Now when I run ping -c... (1 Reply)
Discussion started by: msarro
1 Replies

4. Shell Programming and Scripting

Bash function

startvm() { startguest } Is there a way use one line to get this ? actually I want startvm=startguest (5 Replies)
Discussion started by: yanglei_fage
5 Replies

5. UNIX for Dummies Questions & Answers

Bash INKEY$ function...

This is probably common knowledge to the professionals but not so much for amateurs like myself. This is a code snippet for the equivalent of BASIC's... LET char$=INKEY$ As the timeout parameter cannot be less than 1 second then this is the only limitation... It is a single line... (5 Replies)
Discussion started by: wisecracker
5 Replies

6. Shell Programming and Scripting

Yes or No selection within bash function

I need to add a selection within the bash function below and am having some trouble doing so. phox2b() { printf "\n\n" printf "What is the id of the patient getting Phox2B analysis : "; read id printf "Is this an intronic variant? Y/N "; read match_choice case... (5 Replies)
Discussion started by: cmccabe
5 Replies

7. Shell Programming and Scripting

Bash function, for BSD

I am putting this thread to shell-threads, because it is about how to make a function work properly. I need a hint for declaring a function right, it has been more than a year I did not work that straight with bash. So my aim is to turn off the eth0 (as it would be in linux, and bge0 in bsd ),... (2 Replies)
Discussion started by: 1in10
2 Replies

8. Shell Programming and Scripting

Command not found, but using function in bash

In the bash below, if the answer is "y" then goto function remove. If the answer is "n" then goto the id variable line (where the date is inputted). However, I am getting command remove not found, but remove is a function not an command. I must have the syntax incorrect? Thank you :). ... (3 Replies)
Discussion started by: cmccabe
3 Replies

9. Shell Programming and Scripting

Bash function problem

I am trying to figure out why I am having a "problem" with some functions in a bash script I am running. The reason for air quoting is that the functions are working, they are just not displaying anything to screen when called from another function. Here's an example: function Create_Input {... (6 Replies)
Discussion started by: dagamier
6 Replies

10. Shell Programming and Scripting

Bash not calling function after completing

In the below bash the function execute is started with the while true at the end of the script. Currently, this works and processing does begin. The function panel in bold does not get called after execute completes, therefore the user does not get the menu selection and the files just loop... (3 Replies)
Discussion started by: cmccabe
3 Replies
AMANDA-MATCH(7) 						    Miscellanea 						   AMANDA-MATCH(7)

NAME
amanda-match - Common Amanda Match Expression DESCRIPTION
Several Amanda commands allow the user to specify dumps using "match expressions". This manual page describes the syntax of these expressions. In some places, only certain match expressions are allowed. However, several commands take a dump specification ("dumpspec") consisting of a sequence of several expressions intended to match particular dumps in the catalog. Other applications take a DLE specification which indicates a set of DLEs to be operated on. These formats are described below. An expression can be disabled be preceding it with the '=' character, in that case, an exact match is used. Many program have an '--exact-match' argument that disable expression and exact match are used. HOST &; DISK EXPRESSIONS The hosts and disks match by word. Each word is a glob expression, and words are separated by the character '.' for host expressions and '/' for disk expressions. You can anchor the expression on the left with a '^' or on the right with a '$'. The matcher is case insensitive for hosts but case sensitive for disks. A match succeeds if all words in the expression match contiguous words in the host or disk. If the disk is a UNC ("\windowsshare") then all '' are converted to '/' before the match. Using '' is complicated because of the extra quoting required by the shell and amanda. It's easier to use '/' because it requires less quoting ("//windows/share") The special characters follow. Note that the shell interprets some of these characters, so when used on the command line, they must be escaped appropriately for the shell. dot (.) word separator for a host / word separator for a disk word separator for a UNC disk ^ anchor at left of word $ anchor at right of word ? match exactly one character except the separator * match zero or more characters except the separator ** match zero or more characters including the separator [...] match exactly one of the characters enclosed by the brackets. [!...] match exactly one character that is not enclosed by the brackets. Examples hosta Will match hosta, foo.hosta.org, and hoSTA.dOMAIna.ORG but not hostb. host Will match host but not hosta. host? Will match hosta and hostb, but not host or hostabc. ho*na Will match hoina but not ho.aina.org. ho**na Will match hoina and ho.aina.org. ^hosta Will match hosta but not foo.hosta.org. sda* Will match /dev/sda1 and /dev/sda12. /opt Will match the disk opt but not the host opt. (note dots:) .opt. Will match the host opt but not the disk opt. / Will match the disk / but no other disk. /usr Will match the disks /usr and /usr/local. /usr$ Will match the disks /usr but not /usr/local. share Will match the disks \windows1share and \windows2share. share* Will match the disks \windowsshare1 and \windowsshare2. //windows/share Will match the disk \windowsshare. DATESTAMP EXPRESSIONS
A datestamp expression is either a prefix of the datestamp, or a range expression (separated by '-') matching several prefixes. A leading ^ is removed, while arailing $ will force an exact match. Examples 20001212-14 match all dates beginning with 20001212, 20001213 or 20001214 20001212-4 same as previous 20001212-24 match all dates between 20001212 and 20001224 2000121 match all dates that start with 2000121 (20001210-20001219) 2 match all dates that start with 2 (20000101-29991231) 2000-10 match all dates between 20000101-20101231 200010$ match only 200010 LEVEL EXPRESSIONS
Level expressions are either prefix matches e.g., "1", which matches "1", "10", and "123", absolute matches e.g., "3$" which only matches "3", or a range e.g., "3-5" which only matches levels 3, 4, and 5. DUMP SPECIFICATIONS
A dump specification is used to select one or more dumps from the catalog. It consists of a sequence of match expressions in the order host, disk, datestamp, and level. Note that some commands do not take a level argument, out of historical accident. Note, too, that the datestamp expression matches the time that the dump was made on the Amanda client, rather than the date it was moved to tape. Examples amtool MyConfig ^vpdesktop$ all dumps of host "vpdesktop" amtool MyConfig '*' /var/stage All dumps of /var/stage on any host amtool MyConfig www1 /var/www '*' www2 /var/www '*' All dumps of /var/www on www1 and www2 (assuming amtool does not require a level argument) DLE SPECIFICATIONS
A DLE specification is used to select one or more DLEs. It consists of a sequence of match expressions. The first must be a host, and subsequent expressions will be experimentally matched against both hosts and disks in the disklist(5), preferring hosts. This dynamic matching process can lead to odd behavior in extreme cases (e.g., where a disk and a host have the same name), but for most uses does exactly what is expected. Examples amtool MyConfig vpdesktop /home/anderson /home/anderson on host vpdesktop amtool MyConfig '*' ^/etc '*' ^/var All DLEs matching ^/var or ^/etc on any host amtool MyConfig web1 www web2 www If no host matches "www", all DLEs matching www on hosts web1 and web2. If a host matches "www", then all DLEs on hosts www, web1, and web2. SEE ALSO
amanda(8), amanda(8), amfetchdump(8), amrestore(8), amadmin(8), amvault(8), amflush(8), amdump(8) The Amanda Wiki: : http://wiki.zmanda.com/ AUTHOR
Dustin J. Mitchell <dustin@zmanda.com> Zmanda, Inc. (http://www.zmanda.com) Amanda 3.3.3 01/10/2013 AMANDA-MATCH(7)
All times are GMT -4. The time now is 05:27 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy