Solved

how to read special characters in shell script

Posted on 2007-11-26
8
4,250 Views
Last Modified: 2013-12-26
How to read special characters in bash shell?
I need to read 2 file names which could contain special characters, like $ # etc.
I am appreciate someone can help me with this. this code is really make me crazy. Thanks
#!/bin/bash

#Process one file##############

read() {

     tempPoint=0

     line=1

     while [ $line -le $lineCount ]

     do    

	subPoint=`sed -n "$line"p $file | awk '{print $2}'`

        name=`sed -n "$line"p $file | awk '{print $1}'	`

        if [ -n "$name" ]

        then {

        if [ $Name = $name ]

        then

        {

        tempPoint=$subPoint

        }

        fi

        }

        fi

        line=`expr $line + 1`

    done

    if [ $tempPoint -ne 0 ]

    then

    	totalPoint=`expr $totalPoint + $tempPoint`

    fi

}

######main program###############
 

if [ $# -eq 0 ]

then

    echo "no arguments"

    echo

    exit 1

fi

if [ $# -eq 1 ]

then

    echo "no files"

    echo

    exit 1

fi

if [ $# -eq 2 ]

then

    echo "no files"

    echo

    exit 1

fi

Name=$1

shift

totalPoint=0

total=0

until [ $# -eq 0 ]

do

    if [ -f "$1" ]

    then

     {

     file=$1

     total=`expr $total + 1`

     lineCount=`wc -l < $file`

     read

    }

    fi

    shift

done
 

if [ $total -eq 0 ]

then

{

   echo "no files"

   echo

}

else

{

   echo $Name "AVG:" `expr $totalPoint / $total`

}

fi

Open in new window

0
Comment
Question by:matchge
  • 3
  • 3
8 Comments
 
LVL 48

Expert Comment

by:Tintin
ID: 20355385
What problem are you having?  Works fine for me.  Remember that you should quote filenames with funny characters, eg:

script 'file1$#' 'file2$%'
0
 

Author Comment

by:matchge
ID: 20355465
Thank you very much.
But what if I want to input without the single quote?
Thanks for ur comments.
0
 
LVL 48

Expert Comment

by:Tintin
ID: 20355514
Very much depends on your shell.

For example in bash, you can set the GLOBIGNORE environment variable to ignore various glob characters such as * and ?, eg:

export GLOBIGNORE=*:?

However, for $, you need to escape it with either single quotes or backslash, eg:

script file1\$#
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:matchge
ID: 20355600
So,you mean I need to consider all the possibility $,#,\,'," etc? Is there any fast and convince way to handle them all?
Thank you ~~~
0
 

Author Comment

by:matchge
ID: 20355642
where can I find out how to handle other special characters? like #,space,',",\ ?
0
 
LVL 48

Accepted Solution

by:
Tintin earned 125 total points
ID: 20355824
Using single quotes is the most reliable, simple way of specifying meta-characters.  If the data also includes a single quote, you need to use a backslash, eg:

'abc\'def'
0
 
LVL 51

Assisted Solution

by:ahoffmann
ahoffmann earned 125 total points
ID: 20397628
> Is there any fast and convince way to handle them all?
simply prefix each character by \  (backslash)
Otherwise you have to use quotes or a shell which has no meta characters.
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Suggested Solutions

A short article about problems I had with the new location API and permissions in Marshmallow
If you’re thinking to yourself “That description sounds a lot like two people doing the work that one could accomplish,” you’re not alone.
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now