Sponsored Content
Top Forums Shell Programming and Scripting store multiple variables in one go Post 302421424 by radoulov on Friday 14th of May 2010 09:40:48 AM
Old 05-14-2010
Quote:
Originally Posted by lavascript
[...][The array seems a good idea, and i've used arrays briefly in the past. I'm having trouble with IFS though. This is running on Solaris8 using ksh.

Code:
host# cat m
#!/bin/ksh

oldIFS=$IFS

array=$(: | format | awk '/^(\ +)[0|1]/ {printf "%s ", $2}')

disk1=${array[0]}
disk2=${array[1]}

echo "disk1 = $disk1 | disk2 = $disk2"
host# ./m
disk1 = c0t0d0 c0t8d0  | disk2 =
host#

You're using ksh88 and ksh88 doesn't support that syntax.

You should either use its supported syntax:

Code:
$ set -A arr $(print your_command will produce one two)
$ print ${arr[0]}
your_command
$ print ${arr[3]}
one
$ print ${arr[@]}
your_command will produce one two

Or use ksh93 (if available under /usr/dt/bin/dtksh):

Code:
$ /usr/dt/bin/dtksh
$ arr=($(print your_command will produce one two))
$ print ${arr[0]}
your_command

You don't need to modify IFS in this case.

---------- Post updated at 03:40 PM ---------- Previous update was at 03:37 PM ----------

Quote:
Originally Posted by lavascript
Thanks the replies.

The eval basically doesnt work as i'm not trying to run the return :-

Code:
host# cat l
#!/bin/ksh

eval $(: | format | awk '/^(\ +)0/ {print disk1=$2}; /^(\ +)1/ {print disk2=$2}')

echo "disk1 = $disk1 | disk2 = $disk2"
host# ./l
./l[3]: c0t0d0:  not found
disk1 =  | disk2 =

You should quote disk1= and disk2= to make it work:

Code:
print "disk1=" $2 ...

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract numbers from a string and store in variables

Hi All, Is it possible in Unix shell script to extract numbers from a string containing ".", such as; 5.2.314 And store in variables so; var1 = 5 var2 = 2 var3 = 314 Thanks in advance for any help anyone can provide dave (6 Replies)
Discussion started by: davewg
6 Replies

2. UNIX for Dummies Questions & Answers

trying to store variables in an array

im looping through an array setting three variables each time (one of the variables gives me the position in the array and is incremented each loop) im trying to then set the variables to that position in the array without much luck. any ideas? anArray=`$VAR1+$VAR2+"("$pos")"` (1 Reply)
Discussion started by: magnia
1 Replies

3. Shell Programming and Scripting

[Doubt] How can I store numbers less than 1? Shell variables

Hi everyone, I am having some problems with my scripts so I hope you could help me. I am trying to store the result of a division in a variable in tcshell but I have the problem that if: For example, dividing 2/100 the result is 0.02 but if I store that I have "0". How can I have 0.02... (8 Replies)
Discussion started by: Bloody
8 Replies

4. Shell Programming and Scripting

Parse config file and store the values in variables

Hi, I have a config file that has blank, commented lines. I need to escape commented lines, blank lines, parse the remaining lines and store them in variables or array. the config file contains the following lines. # config file # Define Oracle User ORA_USER=abcde ORA_PASS=xyzabc... (8 Replies)
Discussion started by: Lakshmi Chowdam
8 Replies

5. Shell Programming and Scripting

Split lines in a file and store them in variables

Hi, I have a file called files.txt which contains data like http://abc.xyz.com/ghi/klm/nop/qrs/tuv/wxyz/ There are multiple lines like the above in this file. In .sh script, I would like to read this file, split each line, and store the variable of "qrs" and "wxyz" in separate variables. ... (3 Replies)
Discussion started by: archana.n
3 Replies

6. Shell Programming and Scripting

saving all input name and store them as variables

Hi I want to write a script such that when executed, it will store all input as different variable, for eg ./store.sh name1 name2 name3 name4 will result in $1=name1 $2=name2 $3=name3 etc How do I do that? Thanks. (1 Reply)
Discussion started by: piynik
1 Replies

7. Shell Programming and Scripting

Can -v option in awk be used to store an array of variables?

I want to pass an array of variables to be inserted by awk in the 2nd column of a file. Empl No. Employee Age 1000000 22 1100000 24 1200000 26 Now, I want to pass an array having three different ages which need to replace the... (7 Replies)
Discussion started by: Nishi_Licious
7 Replies

8. Shell Programming and Scripting

How to store results of multiple sql queries in shell variables in ksh?

Hi, I have a script where I make a sqlplus connection. In the script I have multiple sql queries within that sqlplus connection. I want the result of the queries to be stored in shell variables declared earlier. I dont want to use procedures. Is there anyway else. Thanks in advance.. Cheers (6 Replies)
Discussion started by: gonchusirsa
6 Replies

9. Linux

How to store count of multiple queries in variables in a shell script?

how to store the count of queries in variables inside a filein shell script my output : filename ------- variable1=result from 1st query variable2=result from 2nd query . . . . (3 Replies)
Discussion started by: sanvel
3 Replies

10. Shell Programming and Scripting

Store output in variables instead of files

Hi All, I have written a (bash) function which generates multiple files say file1 file2 file3 now I want to reduce the generation of these three files i.e. store the output of three files in variables, and generate the same results, in-order to avoid multiple creation of files how is that... (7 Replies)
Discussion started by: sam@sam
7 Replies
vgmove(1M)																vgmove(1M)

NAME
vgmove - move data from an old set of disks in a volume group to a new set of disks SYNOPSIS
autobackup] diskmapfile vg_name autobackup] diskfile diskmapfile vg_name DESCRIPTION
The command migrates data from the existing set of disks in a volume group to a new set of disks. After the command completes successfully, the new set of disks will belong to the same volume group. The command is intended to migrate data on a volume group from old storage to new storage. The diskmapfile specifies the list of source disks to move data from, and the list of destination disks to move data to. The user may choose to list only a subset of the existing physical volumes in the volume group that need to be migrated to a new set of disks. The format of the diskmapfile file is shown below: source_pv_1 destination_pv_1_1 destination_pv_1_2 .... source_pv_2 destination_pv_2_1 destination_pv_2_2 .... .... source_pv_n destination_pv_n_1 destination_pv_n_2 .... If a destination disk is not already part of the volume group, it will be added using see vgextend(1M). Upon successful completion of the source disk will be automatically removed from the volume group using see vgreduce(1M). After successful migration, the destination disks are added to the LVM configuration files; namely, or The source disks along with their alternate links are removed from the LVM configuration files. A sample diskmapfile is shown below: /dev/disk/disk1 /dev/disk/disk51 /dev/disk/disk52 /dev/disk/disk2 /dev/disk/disk51 /dev/disk/disk3 /dev/disk/disk53 The diskmapfile can be manually created, or it can be automatically generated using the diskfile and diskmapfile options. The argument diskfile contains a list of destination disks, one per line such as the sample file below: /dev/disk/disk51 /dev/disk/disk52 /dev/disk/disk53 When the option is given, reads a list of destination disks from diskfile, generates the source to destination mapping, and saves it to diskmapfile. The volume group must be activated before running the command. If the command is interrupted before it completes, the volume group is in the same state it was at the beginning of the command. The migration can be continued by running the command with the same options and disk mapping file. Options and Arguments The command recognizes the following options and arguments: vg_name The path name of the volume group. Set automatic backup for this invocation of autobackup can have one of the following values: Automatically back up configuration changes made to the volume group. This is the default. After this command executes, the command is executed for the volume group; see vgcfgbackup(1M). Do not back up configuration changes this time. Specify the name of the file containing the source to destination disk mapping. If the option is also given, will generate the disk mapping and save it to this filename. (Note that if the diskmapfile already exists, the file will be overwritten). Otherwise, will perform the data migration using this diskmapfile. Specify the name of the file containing the list of destination disks. This option is used with the option to generate the diskmapfile. When the option is used, no volume group data is moved. Preview the actions to be taken but do not move any volume group data. Shared Volume Group Considerations For volume group version 1.0 and 2.0, cannot be used if the volume group is activated in shared mode. For volume groups version 2.1 (or higher), can be performed when activated in either shared, exclusive, or standalone mode. Note that the daemon must be running on all the nodes sharing a volume group activated in shared mode. See lvmpud(1M). When a node wants to share the volume group, the user must first execute a if physical volumes were moved in or out of the volume group at the time the volume group was not activated on that node. LVM shared mode is currently only available in Serviceguard clusters. EXTERNAL INFLUENCES
Environment Variables determines the language in which messages are displayed. If is not specified or is null, it defaults to "C" (see lang(5)). If any internationalization variable contains an invalid setting, all internationalization variables default to "C" (see environ(5)). EXAMPLES
Move data in volume group from to After the migration, remove from the volume group: Generate a source to destination disk map file for where the destination disks are and SEE ALSO
lvmpud(1M), pvmove(1M), vgcfgbackup(1M), vgcfgrestore(1M), vgextend(1M), vgreduce(1M), intro(7), lvm(7). vgmove(1M)
All times are GMT -4. The time now is 10:13 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy