Sponsored Content
Full Discussion: System call oddity
Top Forums Shell Programming and Scripting System call oddity Post 302937832 by beomagi on Monday 9th of March 2015 09:33:15 PM
Old 03-09-2015
Ok, here's a simpler example.

very simple script

Code:
#!/bin/sh
##apple soda
##banana split
##peach cobbler
##apple pie
##apple computer
##zuchinni casserole
##mango apple smoothie
##adam's apple
##app installer
##whatsapp
##application manager

export me=$0
datacmd="cat $me | grep ^##"
echo $datacmd
data=`$datacmd`

output:
Code:
beomagi@VBMagi ~ $ ./test.sh 
cat ./test.sh | grep ^##
cat: |: No such file or directory
cat: grep: No such file or directory
cat: ^##: No such file or directory

The first line of the output
"cat ./test.sh | grep ^##" is from the line echo $datacmd

The next 3 lines of errors all come from this : data=`$datacmd`

Yet if I directly drop this into the prompt:
Code:
beomagi@VBMagi ~ $ cat ./test.sh | grep ^##
##apple soda
##banana split
##peach cobbler
##apple pie
##apple computer
##zuchinni casserole
##mango apple smoothie
##adam's apple
##app installer
##whatsapp
##application manager

It works.

i.e. cat ./test.sh | grep ^## works,
BUT if it's a in a string type variable and I execute it as a system call it barfs.

Why?Smilie

---------- Post updated at 09:33 PM ---------- Previous update was at 09:14 PM ----------

I'm balder now.

I think that helped.

I found out that there's "eval" and I can even call bash if i want to execute my string.

backticks just don't seem to cut it for complex calls.

Code:
#!/bin/sh
##apple soda
##banana split
##peach cobbler
##apple pie
##apple computer
##zuchinni casserole
##mango apple smoothie
##adam's apple
##app installer
##whatsapp
##application manager

datacmd="cat $me | grep ^##"
echo $datacmd
data=`eval "$datacmd"`
echo "$data"


gives:
Code:
beomagi@VBMagi ~ $ ./test.sh 
cat ./test.sh | grep ^##
##apple soda
##banana split
##peach cobbler
##apple pie
##apple computer
##zuchinni casserole
##mango apple smoothie
##adam's apple
##app installer
##whatsapp
##application manager



Yaaayyy....

Last edited by beomagi; 03-09-2015 at 11:28 PM..
 

10 More Discussions You Might Find Interesting

1. Programming

semclt system call ???

hi mates, What is the : semctl system call for? any example will be helpful and be appreciated. cya and thanx abdul (2 Replies)
Discussion started by: abdul
2 Replies

2. UNIX for Advanced & Expert Users

how to differentiate system call from library call

Hi, Ho do I differentiate system call from library call? for example if I am using chmod , how do I find out if it is a system call or library call? Thanks Muru (2 Replies)
Discussion started by: muru
2 Replies

3. Programming

c system call

How the c compiler differentiates the system calls and function calls? (1 Reply)
Discussion started by: rangaswamy
1 Replies

4. Linux

system call problem

hi, where can I find the detail information about the syscall in binary instructions of linux/mips. for example, in linux/mips: li v0, 4140 syscall it's a syacall of "lseek" , but how can I find that which registers will be used in this syscall , and the meaning of the arguments in the... (2 Replies)
Discussion started by: zerocool_08
2 Replies

5. Shell Programming and Scripting

system call

Hi, How to write a system calls in a script ? > cd $HOME > ls -ltr thanks in advance.. (10 Replies)
Discussion started by: hegdeshashi
10 Replies

6. Programming

C:system call

Hi I'm studing the system call. I've written a small program that return the time spent in doing some operations. Now I'd like to write one that return the time spent in user mode of a process. I'm reading that i should use the tms struct: clock_t times(struct tms *buf); struct tms {... (2 Replies)
Discussion started by: Dedalus
2 Replies

7. Programming

system call

I have a cgi script which is called after certain time interval, which has this: system ("ls -l /tmp/cgic* | grep -v \"cgicsave.env\" | awk '{print $5}'"); During the execution of this script,the output is 0 sometimes. But due to this the system call is not working at all and doesnt o/p... (2 Replies)
Discussion started by: xs2punit
2 Replies

8. Programming

need help with system call

hi everyone i wrote a system call and compiled the kernel succesfully... my system call is in a file in the kernel folder named my_syscall1.c (kernel/my_syscall1.c) the header file for this system call i added it in the folder include like this include/my_syscall1/my_syscall1.h my problem is... (2 Replies)
Discussion started by: demis87
2 Replies

9. Shell Programming and Scripting

system call

Trying to figure out a load issue with a webserver. I have traced a php script and noticed the following connect(4, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = -1 EINPROGRESS (Operation now in progress) <0.000035> poll(, 1, 2000) = 1 () <0.000120>... (5 Replies)
Discussion started by: rajan007
5 Replies

10. Programming

Bind system call

We are calling the bind system call as below bind(sfd, (struct sockaddr *) &addr, sizeof(struct sockaddr_un));Why there is difference in third parameter getting the sizeof as "struct sockaddr_un", wherein the 2nd parametere we are passing it as "(struct sockaddr *)"? Regards, Sajjan (2 Replies)
Discussion started by: VSSajjan
2 Replies
ARRAY_UNSHIFT(3)							 1							  ARRAY_UNSHIFT(3)

array_unshift - Prepend one or more elements to the beginning of an array

SYNOPSIS
int array_unshift (array &$array, mixed $value1, [mixed $...]) DESCRIPTION
array_unshift(3) prepends passed elements to the front of the $array. Note that the list of elements is prepended as a whole, so that the prepended elements stay in the same order. All numerical array keys will be modified to start counting from zero while literal keys won't be touched. PARAMETERS
o $array - The input array. o $value1 - First value to prepend. RETURN VALUES
Returns the new number of elements in the $array. EXAMPLES
Example #1 array_unshift(3) example <?php $queue = array("orange", "banana"); array_unshift($queue, "apple", "raspberry"); print_r($queue); ?> The above example will output: Array ( [0] => apple [1] => raspberry [2] => orange [3] => banana ) SEE ALSO
array_shift(3), array_push(3), array_pop(3). PHP Documentation Group ARRAY_UNSHIFT(3)
All times are GMT -4. The time now is 02:47 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy