10-02-2008
Joining two arrays and then creating a variable
Hello all...
I'd like to create a variable from an array element from two arrays. In my search for answers I found this code for bash that joins two arrays and then started to work with it. I had got to work once and then foolishly without saving the code, I started to edit it for ksh and subsequently broke it. Now I can't get it to work again. Any suggestions?
BASH CODE >>>
#!/bin/bash
NAME=([0]="John" [1]="Mary" [2]="Fred")
SURNAME=([0]="Doe" [1]="Poppins" [2]="Flintstone")
# this gets args from command line and add them to the arrays.
# it's NOT the Right Thing, but can give you a brief idea of what to do
# You may add options, like -name "list" -surname "list" to parse the
# correct elements and insert them in the appropriated array.
for i in $@
do
# this ugly stuff inside brackets counts the number of elements
# so every new element added increases array counter.
NAME[${#NAME[@]}]=$i
SURNAME[${#SURNAME[@]}]=$i
done
# starts loop at element 0 and stops at last.
for ((i=0; i < ${#NAME[@]}; i++))
do
# echo element number, name and surname.
echo "Howdy #$i: ${NAME[$i]} ${SURNAME[$i]}"
done
<<<
What I thought I had come up with was:
MY VERSION OF THE BASH CODE >>>
NAME=("John" "Mary" "Fred")
SURNAME=("Doe" "Poppins" "Flintstone")
for i in $@
do
NAME[${#NAME[@]}]=$i
SURNAME[${#SURNAME[@]}]=$i
done
for ((i=0; i < ${#NAME[@]}; i++))
do
echo "Howdy #$i: ${NAME[$i]} ${SURNAME[$i]}"
NAME[$i]=${SURNAME[$i]}
done
echo "$John"
echo "$Mary"
echo "$Fred"
<<<
---
Carl
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
hi, I was wondering if there was a good way to create an array within a function, where the name is based on a passed argument? I tried this:
_____________________________
func(){
#take in 1st arg as the arrayname
arrayName=$1
let i=0
while read line
do
arrayName=${line}
let i+=1... (5 Replies)
Discussion started by: nix21
5 Replies
2. Shell Programming and Scripting
I need to create arrays like this:
cnt=0
{ while read myline; do
if ];then
firstpass="${myline##<meas>}"
meas="${firstpass%%</meas>}"
tempmeas="${meas%%;*}"
MEAS$cnt=$tempmeas
print $cnt
print ${MEAS'$cnt'}
... (2 Replies)
Discussion started by: ajgwin
2 Replies
3. UNIX for Dummies Questions & Answers
hi all
i have a directory which contain file
20060101-66666-09-08-0.tif
20060101-77777-11-12-0.tif
20051231-54221-66-55.tif
20051231-54221-66-44.tif
as you can see the name of the two last files is shorter then the first ones
i want to take all the files with the shorter name and to add to... (7 Replies)
Discussion started by: naamas03
7 Replies
4. Shell Programming and Scripting
I really need help on this problem.
The story:
My VAR1 and VAR2 works fine and able to get the value. I want to do as "if VAR1 or VAR2 is bigger than max_loadavg then the code will run...then if VAR1 or VAR2 is lesser than min_loadavg then the other code will run...
The problem:
The... (8 Replies)
Discussion started by: hezry79
8 Replies
5. Shell Programming and Scripting
Hi,
I need help in creating a array in shell scirpt.
I have a file which has following details.
hostname devices
device1
device 2
de
abcdmhs10 1234
2343
2353
3343
3435
2343
bcdfmhs11 2343
2443
3434
8874
0343
3434 (5 Replies)
Discussion started by: jpkumar10
5 Replies
6. Shell Programming and Scripting
Hello,
I am trying to redirect files to a directory by using a config file. The config files is as such:
xxxxxx,ID,PathToDirectory
xxxxxx,ID2,PathToDirectory2
and so on...
I have a variable that should match one of these IDs. I want to load this config file into an awk array, and... (2 Replies)
Discussion started by: jrfiol
2 Replies
7. Shell Programming and Scripting
I am fairly new to bash and am not sure how to resolve this:
I have a series of geographical long/lat points eg. 50/-30 listed on separate lines in a file called junk2. I have input these into an array and am then using that array in a for loop. Towards the end of the loop I create a file called... (4 Replies)
Discussion started by: lily-anne
4 Replies
8. Shell Programming and Scripting
Hi,
I'm trying to get the number of files inside same kind of folders on each disks and assigning each values in to a variable named with same folder and disk name so that it'll be easy for me to identify each time.But somehow I'm not able to assign those values in that specific name variable... (1 Reply)
Discussion started by: ratheeshp
1 Replies
9. Shell Programming and Scripting
Hi all,
I have a script with the following gist:
declare -a index=(0 1 2 3 4);
declare -a animals=(dog cat horse penguin cow);
declare -a fruits=(orange apple grapes peach mango);
declare -a drinks=(juice milk coffee tea coke);
declare -a cities=(toronto paris london glasgow... (18 Replies)
Discussion started by: Kingzy
18 Replies
10. Shell Programming and Scripting
Hello everyone,
First of all this is my first post and im fairly new to working with Unix and creating scripts etc. so there will probably be wrong phrases used.
Lets get to my questions.
I have multiple scripts that submit Slurms/Jobs to the cluster starting like this and doing certain... (3 Replies)
Discussion started by: idbemad
3 Replies
LEARN ABOUT PHP
oci_bind_array_by_name
OCI_BIND_ARRAY_BY_NAME(3) OCI_BIND_ARRAY_BY_NAME(3)
oci_bind_array_by_name - Binds a PHP array to an Oracle PL/SQL array parameter
SYNOPSIS
bool oci_bind_array_by_name (resource $statement, string $name, array &$var_array, int $max_table_length, [int $max_item_length = -1],
[int $type = SQLT_AFC])
DESCRIPTION
Binds the PHP array $var_array to the Oracle placeholder $name, which points to an Oracle PL/SQL array. Whether it will be used for input
or output will be determined at run-time.
PARAMETERS
o $statement
- A valid OCI statement identifier.
o $name
- The Oracle placeholder.
o $var_array
- An array.
o $max_table_length
- Sets the maximum length both for incoming and result arrays.
o $max_item_length
- Sets maximum length for array items. If not specified or equals to -1, oci_bind_array_by_name(3) will find the longest element
in the incoming array and will use it as the maximum length.
o $type
- Should be used to set the type of PL/SQL array items. See list of available types below:
o SQLT_NUM - for arrays of NUMBER.
o SQLT_INT - for arrays of INTEGER (Note: INTEGER it is actually a synonym for NUMBER(38), but SQLT_NUM type won't work in
this case even though they are synonyms).
o SQLT_FLT - for arrays of FLOAT.
o SQLT_AFC - for arrays of CHAR.
o SQLT_CHR - for arrays of VARCHAR2.
o SQLT_VCS - for arrays of VARCHAR.
o SQLT_AVC - for arrays of CHARZ.
o SQLT_STR - for arrays of STRING.
o SQLT_LVC - for arrays of LONG VARCHAR.
o SQLT_ODT - for arrays of DATE.
RETURN VALUES
Returns TRUE on success or FALSE on failure.
EXAMPLES
Example #1
oci_bind_array_by_name(3) example
<?php
$conn = oci_connect("hr", "hrpwd", "localhost/XE");
if (!$conn) {
$m = oci_error();
trigger_error(htmlentities($m['message']), E_USER_ERROR);
}
$create = "CREATE TABLE bind_example(name VARCHAR(20))";
$stid = oci_parse($conn, $create);
oci_execute($stid);
$create_pkg = "
CREATE OR REPLACE PACKAGE ARRAYBINDPKG1 AS
TYPE ARRTYPE IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER;
PROCEDURE iobind(c1 IN OUT ARRTYPE);
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg);
oci_execute($stid);
$create_pkg_body = "
CREATE OR REPLACE PACKAGE BODY ARRAYBINDPKG1 AS
CURSOR CUR IS SELECT name FROM bind_example;
PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
BEGIN
-- Bulk Insert
FORALL i IN INDICES OF c1
INSERT INTO bind_example VALUES (c1(i));
-- Fetch and reverse
IF NOT CUR%ISOPEN THEN
OPEN CUR;
END IF;
FOR i IN REVERSE 1..5 LOOP
FETCH CUR INTO c1(i);
IF CUR%NOTFOUND THEN
CLOSE CUR;
EXIT;
END IF;
END LOOP;
END iobind;
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg_body);
oci_execute($stid);
$stid = oci_parse($conn, "BEGIN arraybindpkg1.iobind(:c1); END;");
$array = array("one", "two", "three", "four", "five");
oci_bind_array_by_name($stid, ":c1", $array, 5, -1, SQLT_CHR);
oci_execute($stid);
var_dump($array);
?>
PHP Documentation Group OCI_BIND_ARRAY_BY_NAME(3)