Issue while executing C executable with argument in shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Issue while executing C executable with argument in shell script
# 1  
Old 10-18-2013
Issue while executing C executable with argument in shell script

Hi All,
I am new to this forum and also shell script Smilie

My task is I have to read CSV file get the data from the file and use the data to call c executable with data as argument.And the output from c executable should be stored to new CSV file

Please find below my code

Code:
testfunction() { echo ${#1};./my_c_executable_file_name -l $1> op.txt; }
IFS=","
echo "Starting to read csv"
i=1
while read f1 f2
do
    echo "$f2";
    testfunction "$f2";
    value=$(<op.txt);
    echo $f1, $value >> output.csv

done < Book1.csv

Now the issue is the data coming from 1st CSV is around 804 characters, but when the code is executing the c executable it is not sending complete string in the argument.

I tried to remove \n but got an error file name too long.

Please help me for the same.

Thanks in advance
# 2  
Old 10-18-2013
Quote:
Originally Posted by ravjot28
Hi All,
I am new to this forum and also shell script Smilie

My task is I have to read CSV file get the data from the file and use the data to call c executable with data as argument.And the output from c executable should be stored to new CSV file

Please find below my code

Code:
testfunction() { echo ${#1};./my_c_executable_file_name -l $1> op.txt; }
IFS=","
echo "Starting to read csv"
i=1
while read f1 f2
do
    echo "$f2";
    testfunction "$f2";
    value=$(<op.txt);
    echo $f1, $value >> output.csv

done < Book1.csv

Now the issue is the data coming from 1st CSV is around 804 characters, but when the code is executing the c executable it is not sending complete string in the argument.

I tried to remove \n but got an error file name too long.

Please help me for the same.

Thanks in advance
Try making the following changes and running your script again:
Change:
Code:
testfunction() { echo ${#1};./my_c_executable_file_name -l $1> op.txt; }

to:
Code:
testfunction() { echo ${#1};./my_c_executable_file_name -l "$1" > op.txt }

and change:
Code:
    echo $f1, $value >> output.csv

to:
Code:
    printf "%s,%s\n" "$f1" "$value" >> output.csv

# 3  
Old 10-19-2013
Thank you for the reply

I tried with the modification as stated above but still I m getting the same error.

Still the executable is throwing error missing last part of string.

For your information
The data coming from CSV contains \n , \ and | among alpha numeric values.

I suspect these can be the issue for not sending the complete string to c executable.

Please let me know if there is any way I can resolve this.
# 4  
Old 10-19-2013
In addition to Don's suggestions, I would keep IFS local to the read command instead of using it globally. Also try using -r to stop read from interpreting \ characters.
Code:
while IFS=, read -r f1 f2 f3

The dummy third variable ($f3) would need to be added only in case the csv has more than 2 fields, otherwise fields 3 and higher wind up in $f2 as well.

Last edited by Scrutinizer; 10-19-2013 at 02:16 AM..
# 5  
Old 10-19-2013
Thanks for the reply Sir

Let me provide you the example that will clear things
Data in CSV is
Code:
\
aadsa=1|dasdsa=adsada-4096|wedewq=sdsadasasdsa|wqewqe=weww-sadasd\
|C2S=004120F1707E4928|DOI=1225906924|DOE=1226511724|ISS=1|NUM=28036|CM\
T=chassis52license|LSP=22000|LSH=22000|LSG=11000|LSL=11000|LSC=10000|L\
EC=1000|LGT=11000|LSA=22000|FIS=Y|FR4=Y|FPP=Y|FTC=Y|FMG=Y|FCR=Y|FSR=Y|\
FPM=Y|FID=Y|FI6=Y|FLI=Y|FPF=Y|FFA=Y|FCA=Y|FUT=Y|FSS=Y|FDB=Y|FDA=Y|FTM=\
Y|FDU=Y|FTP=Y|FTA=Y|FFP=Y|FSA=Y|LIM=19100|LCC=19100|LPC=100|LIS=100|FD\
R=Y|BME=Y|qwewqe=Y|BSC=Y|FRC=Y|FMN=Y|FBM=Y|FDC=Y|FGR=Y|FAA=Y|FRF=Y|FDQ=Y|\
FEL=Y|FIN=Y|qeqweqw=Y|BKO=Y|BEP=Y|FIP=Y|FRO=Y|LSI=11000|LSR=11000|LSS=1100\
0|LSN=11000|qwewqe=Y|LSW=21000|FCC=Y|FCP=Y|LCF=1000|LPP=1000|FVM=Y|FVG=Y|\
FPD=Y|FPR=Y|FVA=Y|FES=Y|FSN=Y|FCD=Y|LSF=1000|FVI=Y|FON=Y|FLS=Y|FSG=Y|F\
qweqe=Y|qwewq=Y|wwqe=Y|adsa=Y|FPC=Y|asdasd=Y|ads=asdad/adaddadas+AU\
aasdasd/qweqwe

and when I tried Don's suggestion I am getting the error

Code:
missing  string ON=Y|FLS=Y|FSG=Y|F\
qweqe=Y|qwewq=Y|wwqe=Y|adsa=Y|FPC=Y|asdasd=Y|ads=asdad/adaddadas+AU\
aasdasd/qweqwe i.e the last part of the string.

I need the complete data to be sent to the c executable

trying Scrutinizer 's code the data is getting split on the basis of \ which is not the requirement.

Last edited by Scrutinizer; 10-19-2013 at 02:56 AM.. Reason: code tags
# 6  
Old 10-19-2013
But that file is not comma-separated, like your code sample suggested. I don't think it would qualify as a CSV. What is the structure of the file and what are you trying to feed into that function?

--
My suggestion does not split on the the basis of \ by the way, it refrains from interpreting \, so it does not join the lines and and since you specified IFS="," , the literal lines in the file end up in field 1.

Last edited by Scrutinizer; 10-19-2013 at 03:11 AM..
# 7  
Old 10-19-2013
My aim is I am having the above format data, and I want to parse the data based on some logic that is present in c executable file.

Now the data count is around 2k so I thought to move the data to csv file and read it from the file and parse it and store to new csv file.

Is there any other solution for the same??

I am not aware of reading excel file so I chose for csv.

Please suggest me in case of any other solution.

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Issue handling single quoted argument in shell script.

Below is my script that works fine and prints the desired output: #!/bin/ksh echo "$1" | while IFS= read -r dirpath do echo "DIRR_PATH:$dirpath" install_dir=$install_dir" "$dirpath done echo "Desired Output:$install_dir" Output: ./loopissue.sh... (10 Replies)
Discussion started by: mohtashims
10 Replies

2. AIX

executable problems with shell script in IBM servers

We have a java stand alone application running currently on sun Solaris system. The java application runs on Jdk 1.4. We are reshooting this java application to new Ibm servers. There are 10 unix scripts for this application. All scripts works well except one shell script, This shell... (2 Replies)
Discussion started by: poojagupta
2 Replies

3. Shell Programming and Scripting

How to pass Oracle sql script as argument to UNIX shell script?

Hi all, $ echo $SHELL /bin/bash Requirement - How to pass oracle sql script as argument to unix shell script? $ ./output.sh users.sql Below are the shell scripts and the oracle sql file in the same folder. Shell Script $ cat output.sh #!/bin/bash .... (7 Replies)
Discussion started by: a1_win
7 Replies

4. Shell Programming and Scripting

Issue on executing db2 queries through shell script

hi i am trying to execute db2 queries through shell script. it's working fine but for few queries is not working ( those queries are taking time so the script is not waiting to get the complete the execution of that query ) could you please any one help me on this is there any wait... (1 Reply)
Discussion started by: bhaskar v
1 Replies

5. Shell Programming and Scripting

Issue while executing script

Hi, I'm trying to use the below command in a shell script, but couldn't. The command is working fine when I'm executing from the dollar prompt i.e. shell. Command: grep -i fail /home/applmgr/error.log |egrep -i "`date --date="-4 day" +"%m/%d/%Y"`|`date --date="-4 day" +"%m/%d/%y"`"... (8 Replies)
Discussion started by: venkatesh17
8 Replies

6. Shell Programming and Scripting

Shell script to find the sum of argument passed to the script

I want to make a script which takes the number of argument, add those argument and gives output to the user, but I am not getting through... Script that i am using is below : #!/bin/bash sum=0 for i in $@ do sum=$sum+$1 echo $sum shift done I am executing the script as... (3 Replies)
Discussion started by: mukulverma2408
3 Replies

7. Shell Programming and Scripting

Passing argument to a script while executing it within current shell

Hi Gurus, I have written a script set_env.ksh to which I pass an argument and set the oracle login credentials based on the argument I pass. The script has code as below. ORACLE_SID=$1 DB_SCHEMA_LOGON=$DB_SCHEMA_USER/$DB_SCHEMA_PASSWORD@$ORACLE_SID; export DB_SCHEMA_LOGON; echo... (3 Replies)
Discussion started by: Sabari Nath S
3 Replies

8. Shell Programming and Scripting

convert shell script into a binary executable

Hello every one, i want to convert my shell script into a binary executable a .exe file , is it possible to do that if so are there any tools . Would the script take off when the arguments are parsed. Thanks Venu (13 Replies)
Discussion started by: venu
13 Replies

9. UNIX for Dummies Questions & Answers

running command prompt executable file in shell script

hi i have file extentioned with test.vbs. i am able to run this file n execute through command promt but i dont know how to run in shell script example: file name is test.vbs which contains strSoundFile = "C:\windows\Media\Notify.wav" Set objShell = CreateObject("Wscript.Shell") strCommand... (5 Replies)
Discussion started by: atl@mav
5 Replies

10. UNIX for Dummies Questions & Answers

Shell script $0 argument

Hi, If not running a shell script file in current shell (. ./fileName) then $0 represents the executable file name. But in case of invoking shell script file in current shell then i m getting "$0 as -bash" . In such case how can i get the program name (running shell script file name)? Thanks, (2 Replies)
Discussion started by: painulyarun
2 Replies
Login or Register to Ask a Question