Not able to assign a value to variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Not able to assign a value to variable
# 8  
Old 07-22-2009
Nice thought Smilie
but actually the external vendor puts this file into our server,we cannot make any changes to this file.. Smilie
Actually I am thinking if i can create the copy of the source file(config.csv) and then use sed command(replacing the slashes) ...but then will sftp command will work properly?? Smilie
I am not sure if this approach is proper or not Smilie
Anyone have better idea ... Smilie
# 9  
Old 07-22-2009
hehe, just replace the backslashes for the meantime
Code:
-bash-3.2$ sed -e 's|\\|/|g' config.csv
pathname,filename,filetype
/home/fir/dir,filename1,csv
/home/fir1/dir,filename2,csv
/home/fir4/dir,filename3,csv
/home/fir/dir6,filename4,dat
-bash-3.2$

# 10  
Old 07-22-2009
Quote:
Originally Posted by Amey Joshi

Code:
$ cat config.csv
pathname,filename,filetype
\home\fir\dir,filename1,csv
\home\fir1\dir,filename2,csv
\home\fir4\dir,filename3,csv
\home\fir\dir6,filename4,dat

.....

Code:
echo $line > 45.txt
.....
DataPath=`cat 45.txt | awk -F"," '{print $1}'

DataPath=` .... `
or write it
DataPath=$( .... ) - easier to see and read (and maybe understand = take value of subprocess).
# 11  
Old 07-22-2009
i try that one also, it makes $line value to "homefirdir,filename1,csv"
# 12  
Old 07-22-2009
Double the \ character from the input file and use the print -R command instead of echo :
Code:
$ cat config.csv
pathname,filename,filetype
\home\fir\dir,filename1,csv
\home\fir1\dir,filename2,csv
\home\fir4\dir,filename3,csv
\home\fir\dir6,filename4,dat
$ cat amey.ksh
#!/bin/ksh
head -5 config.csv | sed 's+\\+&&+g' | while read line
do
Type1=`echo $line | awk -F"," '{print $3}'`
Type=`echo $Type1 | tr [A-Z] [a-z]`
if [ $Type = 'csv' ]
 then
   DataFileName=`echo $line | awk -F"," '{print $2}'`
   DataPath=`print -R "$line" | awk -F"," '{print $1}'`
   print -R $DataPath
   slash=`echo '\'`
   filelocation=`echo $DataPath$slash$DataFileName`
   echo do sftp -n
fi
done
$ amey.ksh
\home\fir\dir
do sftp -n
\home\fir1\dir
do sftp -n
\home\fir4\dir
do sftp -n
$

Your script can be rewritten in the following form :
Code:
typeset -l Type
head -5 config.csv | sed 's+\\+&&+g' |
while IFS=, read DataPath DataFileName Type
do
if [ "$Type" = 'csv' ]
 then
   FileLocation="$DataPath\\$DataFileName"
   print -R  $DataPath
   print do sftp -n
fi
done

jean-Pierre.
# 13  
Old 07-22-2009
Code:
#!/bin/ksh
oifs="$IFS"
cat config.csv | while read -r line
do
        IFS=","
        fields=($line)
        IFS="$oifs"
        Type=${fields[2]}
        Filename=${fields[1]}
        Path=${fields[0]}
        [ "$Type" != "csv" ] && continue
        print -R "$Path - $Filename"
done

# 14  
Old 07-23-2009
Computer

Thanks All!!
Smilie
Both the scripts work really very well... Smilie

Again Many Thanks!!! Smilie Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Assign value to variable

Hi Guys, I need to assign the value of which has rows to a variable, Can you advise how to do that hive --orcfiledump /hdfs_path/ | grep "Rows" Rows: 131554 I need to assign this row count itself to a unix variable count=$(hive --orcfiledump /hdfs_path/ | grep "Rows") Expected ... (6 Replies)
Discussion started by: Master_Mind
6 Replies

2. UNIX for Beginners Questions & Answers

How can I assign awk's variable to shell script's variable?

I have the following script, and I want to assign the output ($10 and $5) from awk to N and L: grdinfo data.grd | awk '{print $10,$5}'| read N L output from gridinfo data.grd is: data.grd 50 100 41 82 -2796 6944 0.016 0.016 3001 2461. where N and L is suppose to be 3001 and 100. I use... (8 Replies)
Discussion started by: geomarine
8 Replies

3. UNIX for Beginners Questions & Answers

Need to pass variable in a command and assign value to a variable

Hello All, Hope you're doing well ! I am trying below command to be passed in a shell script, header_date_14 is a variable and $1 is the name of a file I intend to pass as a command line argument, however command line argument is not being accepted. header_date_14=$(m_dump... (8 Replies)
Discussion started by: ektubbe
8 Replies

4. Shell Programming and Scripting

Assign a variable with awk

I launch 'netstat -a', if string 'ESTABLISHED' found, then VAR=1 #!/bin/bash VAR=0; netstat -a | awk '$6 ~ /ESTABLISHED/ {VAR=1}' I cannot find the right syntax. thanx guys! (3 Replies)
Discussion started by: arpagon
3 Replies

5. Shell Programming and Scripting

Shell assign variable to another variable

How can I assign a variable to an variable. IE $car=honda One way I can do it is export $car=honda or let $car=2323 Is there any other ways to preform this task (3 Replies)
Discussion started by: 3junior
3 Replies

6. Shell Programming and Scripting

assign awk's variable to shell script's variable?

Dear All, we have a command output which looks like : Total 200 queues in 30000 Kbytes and we're going to get "200" and "30000" for further process. currently, i'm using : numA=echo $OUTPUT | awk '{print $2}' numB=echo $OUTPUT | awk '{print $5}' my question is : can I use just one... (4 Replies)
Discussion started by: tiger2000
4 Replies

7. Shell Programming and Scripting

Assign this to a variable....

bash-3.00$ /usr/bin/netstat -an -f inet | awk -F' ' '{if ($1$4 == "tcp*.21")print $5}' *.* bash-3.00$ A=` /usr/bin/netstat -an -f inet | awk -F' ' '{if ($1$4 == "tcp*.21")print $5}'` bash-3.00$ echo $A db2_lastdone.bkp As you can see ,after running command i get *.* in return but the same... (5 Replies)
Discussion started by: ak835
5 Replies

8. Shell Programming and Scripting

assign a value to a variable

I have a list of names in a file. i want to assign those names to a variable in such a manner eg: $cat file.txt pete lisa john var=pete-lisa-john how do i do this in shell scripting? (10 Replies)
Discussion started by: Shivdatta
10 Replies

9. Shell Programming and Scripting

assign a value to variable

I have to assign a result of a query to a vairable like this how can i do this Query = select count(*) from table x=`db2 ${Query}| sed -n '4p'` but this doesn't work, is there any other way to assign the result without redirecting the result to temp file. . Thanks Mark. (3 Replies)
Discussion started by: markjason
3 Replies

10. UNIX for Dummies Questions & Answers

assign to variable

why i can't use this command: echo $arg | cut -c 1,2 | read remainArg or echo $arg | cut -c 1,2 | read $remainArg so that the result will be assign to remainArg. Anyway to do this? :) (1 Reply)
Discussion started by: AkumaTay
1 Replies
Login or Register to Ask a Question