Sponsored Content
Full Discussion: Insidious Space
Top Forums Shell Programming and Scripting Insidious Space Post 302263568 by Annihilannic on Tuesday 2nd of December 2008 01:18:00 AM
Old 12-02-2008
I don't believe setting IFS has any effect in that scenario... if it did then the shell would consider /usr/bin/grep -win ... all to be one word/command name, and wouldn't find it.

I just tested this on Solaris 10:

Code:
#!/bin/ksh

PATH=/usr/bin
export PATH

function procfile
{
SEARCH=$1
PATTERNFILE=$2
OUTPUTFILE=$3
TEMPFILE=_tmp_output_$$.tmp
OWNER=
OBJECT=

/usr/bin/cat ${PATTERNFILE} | while read LINE
do
  OBJECT=`echo ${LINE}|/usr/bin/awk -F, '{ print $2 }'`
  # find refs to the pattern in each of the files
  /usr/bin/grep -win "${OBJECT}" "$SEARCH"/* > ${TEMPFILE}
  # iterate over the result to marry the pattern to the result in tabular format
  /usr/bin/cat ${TEMPFILE} | while read LINE2
  do
    # do query
    #${ORACLE_HOME}/bin/sqlplus -s...
    echo $LINE2
  done
done
rm $TEMPFILE
}

INPUT=dirlist.txt
PATTERN=oracle_objects.txt
OUTPUT=output.txt

# Query for current patternlist
#${ORACLE_HOME}/bin/sqlplus ...

# Prepare the directory list
#find ...
find t -type d > $INPUT

# iterate over dirlist
cat ${INPUT} | while read LINE
do
    COUNT=`ls -l "$LINE"|wc -l`
    if [ ${COUNT} -gt 1 ]
    then
      procfile "$LINE" ${PATTERN} ${OUTPUT}
    fi
done

These are the test files I used:

Code:
$ find t -type f -ls
  554    1 -rw-r--r--   1 anni     other          14 Dec  2 17:05 t/testdir/testfile
  555    1 -rw-r--r--   1 anni     other          14 Dec  2 17:05 t/testdir/testfile with spaces
  559    1 -rw-r--r--   1 anni     other          14 Dec  2 17:05 t/testdir with spaces/testfile
  560    1 -rw-r--r--   1 anni     other          14 Dec  2 17:05 t/testdir with spaces/testfile with spaces
  551    1 -rw-r--r--   1 anni     other          14 Dec  2 17:05 t/testfile
  552    1 -rw-r--r--   1 anni     other          14 Dec  2 17:05 t/testfile with spaces
$ cat t/testdir/testfile
one
two
three
$ cat oracle_objects.txt
1,one
2,two

And this was the output:

Code:
$ ./s
t/testfile:1:one
t/testfile with spaces:1:one
t/testfile:2:two
t/testfile with spaces:2:two
t/testdir/testfile:1:one
t/testdir/testfile with spaces:1:one
t/testdir/testfile:2:two
t/testdir/testfile with spaces:2:two
t/testdir with spaces/testfile:1:one
t/testdir with spaces/testfile with spaces:1:one
t/testdir with spaces/testfile:2:two
t/testdir with spaces/testfile with spaces:2:two

I doubt ssh is having any effect here... failing to honour $PATH is weird though, are you sure it's exported?
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

wake up user space thread from kernel space ISR

Hello, I'm searching for a proper way to let the kernel space ISR(implemented in a kernel module) wake up a user space thread on a hardware interrupt. Except for sending a real-time signal, is it possible to use a semaphore? I've searched it on google, but it seems impossible to share a... (0 Replies)
Discussion started by: aaronwong
0 Replies

2. Shell Programming and Scripting

Calculate total space, total used space and total free space in filesystem names matching keyword

Good afternoon! Im new at scripting and Im trying to write a script to calculate total space, total used space and total free space in filesystem names matching a keyword (in this one we will use keyword virginia). Please dont be mean or harsh, like I said Im new and trying my best. Scripting... (4 Replies)
Discussion started by: bigben1220
4 Replies

3. Shell Programming and Scripting

Stripping out more than a space from a line, but keep single space.

Hi all, Is there a way to perform the above, I am trying to strip out more than one space from a line, but keep the single space. See below output example. My Name is test test2 test3 test4 test5 My Name is test test2 test3 test4 test5 Please note that the lines would contain... (7 Replies)
Discussion started by: eo29
7 Replies

4. Linux

How to reclaim the space which i used to increse the swap space on Xen,

Hi, i have done a blunder here, i increased the swap space on Xen5.6 server machine using below steps :- 1056 dd if=/dev/zero of=/root/myswapfile bs=1M count=1024 1057 ls -l /root/myswapfile 1058 chmod 600 /root/myswapfile 1059 mkswap /root/myswapfile 1060 swapon /root/myswapfile ... (1 Reply)
Discussion started by: apm
1 Replies

5. Solaris

No space left on device but free space and inodes are available...

hi guys, me again ;) i recently opened a thread about physical to zone migration. My zone is mounted over a "bigger" LUN (500GB) and step is now to move the old files, from the physical server, to my zone. We are talking about 22mio of files. i used rsync to do that and every time at... (8 Replies)
Discussion started by: beta17
8 Replies

6. Fedora

Need to incrwase PHYSICAL VOLUME space on hard drive with free space on it

Hi, I run Fedora 17. I created a physical volume of 30GB on a disk with 60GB of space so there is 30GB of free space. On the physical volume, I created my volume group and logical volumes. I assigned all the space in the physical volume to my volume group. I need to add the 30GB of free space... (1 Reply)
Discussion started by: mojoman
1 Replies

7. UNIX for Dummies Questions & Answers

Changing only the first space to a tab in a space delimited text file

Hi, I have a space delimited text file but I only want to change the first space to a tab and keep the rest of the spaces intact. How do I go about doing that? Thanks! (3 Replies)
Discussion started by: evelibertine
3 Replies

8. UNIX for Advanced & Expert Users

Need to remove leading space from awk statement space from calculation

I created a awk state to calculate the number of success however when the query runs it has a leading zero. Any ideas on how to remove the leading zero from the calculation? Here is my query: cat myfile.log | grep | awk '{print $2,$3,$7,$11,$15,$19,$23,$27,$31,$35($19/$15*100)}' 02:00:00... (1 Reply)
Discussion started by: bizomb
1 Replies

9. Linux

No space left on device while there is plenty of space available

Hello all posting here after scanning the net and tried most of the things offered still no solution that worked when I do : $ df -h Filesystem Size Used Avail Use% Mounted on footmpfs 7.9G 60K 7.9G 1% /dev tmpfs 7.9G 0 7.9G 0% /dev/shm /dev/da1 ... (3 Replies)
Discussion started by: umen
3 Replies

10. Shell Programming and Scripting

Gawk --- produce the output in pattern space instead of END space

hi, I'm trying to calculate IP addresses and their respective calls to our apache Server. The standard format of the input is HOST IP DATE/TIME - - "GET/POST reuest" "User Agent" HOST IP DATE/TIME - - "GET/POST reuest" "User Agent" HOST IP DATE/TIME - - "GET/POST reuest" "User Agent" HOST... (2 Replies)
Discussion started by: busyboy
2 Replies
EXTRACT(3)								 1								EXTRACT(3)

extract - Import variables into the current symbol table from an array

SYNOPSIS
int extract NULL (array &$array, [int $flags = EXTR_OVERWRITE], [string $prefix]) DESCRIPTION
Import variables from an array into the current symbol table. Checks each key to see whether it has a valid variable name. It also checks for collisions with existing variables in the symbol table. PARAMETERS
o $array - An associative array. This function treats keys as variable names and values as variable values. For each key/value pair it will create a variable in the current symbol table, subject to $flags and $prefix parameters. You must use an associative array; a numerically indexed array will not produce results unless you use EXTR_PREFIX_ALL or EXTR_PREFIX_INVALID. o $flags - The way invalid/numeric keys and collisions are treated is determined by the extraction $flags. It can be one of the following values: o EXTR_OVERWRITE - If there is a collision, overwrite the existing variable. o EXTR_SKIP - If there is a collision, don't overwrite the existing variable. o EXTR_PREFIX_SAME -If there is a collision, prefix the variable name with $prefix. o EXTR_PREFIX_ALL - Prefix all variable names with $prefix. o EXTR_PREFIX_INVALID - Only prefix invalid/numeric variable names with $prefix. o EXTR_IF_EXISTS - Only overwrite the variable if it already exists in the current symbol table, otherwise do nothing. This is useful for defining a list of valid variables and then extracting only those variables you have defined out of $_REQUEST, for example. o EXTR_PREFIX_IF_EXISTS - Only create prefixed variable names if the non-prefixed version of the same variable exists in the current symbol table. o EXTR_REFS - Extracts variables as references. This effectively means that the values of the imported variables are still referencing the values of the $array parameter. You can use this flag on its own or combine it with any other flag by OR'ing the $flags. If $flags is not specified, it is assumed to be EXTR_OVERWRITE. o $prefix - Note that $prefix is only required if $flags is EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID or EXTR_PREFIX_IF_EXISTS. If the prefixed result is not a valid variable name, it is not imported into the symbol table. Prefixes are automatically sepa- rated from the array key by an underscore character. RETURN VALUES
Returns the number of variables successfully imported into the symbol table. EXAMPLES
Example #1 extract(3) example A possible use for extract(3) is to import into the symbol table variables contained in an associative array returned by wddx_dese- rialize(3). <?php /* Suppose that $var_array is an array returned from wddx_deserialize */ $size = "large"; $var_array = array("color" => "blue", "size" => "medium", "shape" => "sphere"); extract($var_array, EXTR_PREFIX_SAME, "wddx"); echo "$color, $size, $shape, $wddx_size "; ?> The above example will output: blue, large, sphere, medium The $size wasn't overwritten because we specified EXTR_PREFIX_SAME, which resulted in $wddx_size being created. If EXTR_SKIP was specified, then $wddx_size wouldn't even have been created. EXTR_OVERWRITE would have caused $size to have value "medium", and EXTR_PREFIX_ALL would result in new variables being named $wddx_color, $wddx_size, and $wddx_shape. NOTES
Warning Do not use extract(3) on untrusted data, like user input (i.e. $_GET, $_FILES, etc.). If you do, for example if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting $flags values such as EXTR_SKIP and be aware that you should extract in the same order that's defined in variables_order within the php.ini. Note If you have register_globals turned on and you use extract(3) on $_FILES and specify EXTR_SKIP, you may be surprised at the results. Warning This is not recommended practice and is only documented here for completeness. The use of register_globals is deprecated and calling extract(3) on untrusted data such as $_FILES is, as noted above, a potential security risk. If you encounter this issue, it means that you are using at least two poor coding practices. <?php /* Suppose that $testfile is the name of a file upload input and that register_globals is turned on. */ var_dump($testfile); extract($_FILES, EXTR_SKIP); var_dump($testfile); var_dump($testfile['tmp_name']); ?> You might expect to see something like the following: string(14) "/tmp/phpgCCPX8" array(5) { ["name"]=> string(10) "somefile.txt" ["type"]=> string(24) "application/octet-stream" ["tmp_name"]=> string(14) "/tmp/phpgCCPX8" ["error"]=> int(0) ["size"]=> int(4208) } string(14) "/tmp/phpgCCPX8" However, you would instead see something like this: string(14) "/tmp/phpgCCPX8" string(14) "/tmp/phpgCCPX8" string(1) "/" This is due to the fact that since register_globals is turned on, $testfile already exists in the global scope when extract(3) is called. And since EXTR_SKIP is specified, $testfile is not overwritten with the contents of the $_FILES array so $testfile remains a string. Because strings may be accessed using array syntax and the non-numeric string tmp_name is interpreted as 0, PHP sees $test- file['tmp_name'] as $testfile[0]. SEE ALSO
compact(3), list(3). PHP Documentation Group EXTRACT(3)
All times are GMT -4. The time now is 10:13 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy