Testing the last character in a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Testing the last character in a string
# 1  
Old 07-07-2004
Testing the last character in a string

Hi
In the shell scripted I'm trying to write!

I would like to test the last character in a string. The string is a path/directory and I want to see if the last character is a '/'.

The string (path/directory) is inputted by a user. If the '/' character isn't present then I want to be able to append this character to the string.

I started to right this in awk then scrapped it as I thought there must be an easier way?

Thanks in advance
# 2  
Old 07-07-2004
In ksh:
$ a=abcdefg
$ lastchr=${a#${a%?}}
$ echo $lastchr
g
$
# 3  
Old 07-07-2004
Hmmm..rereading the post, it looks like you might just want to ensure that a string ends in slash. If that's the case...

[[ $string != */ ]] && string="$string"/
# 4  
Old 07-07-2004
Appreciate your help
# 5  
Old 07-07-2004
Can I ask you to tell me what each bit of this assignment does...
lastchr=${a#${a%?}}

What does 'a#' and 'a%?' do...

Thanks a lot
# 6  
Old 07-07-2004
ksh has some really arcane substitution syntax. It's kinda fun but a lot of programmers don't know it, just like folks use only 20% of vi's capability.

Because folks here do not know all of that stuff, I try to use 'understandable' versions. Here is the same thing using expr, which is also portable to other shells.

Code:
lchr=`expr substr $a ${#a} 1`

the substr operand for expr takes:

$a - string to work on

${#a} - a starting point in the string - in this case the
last character ${#a} is the length of a string.

1 - number of characters after the starting point to return

Generally, if you need a lot of string and array features, try bash.
ksh has most of them but some of it is completely counterintuitive. IMO.
# 7  
Old 07-07-2004
Quote:
Originally posted by dbrundrett
Can I ask you to tell me what each bit of this assignment does...
lastchr=${a#${a%?}}

What does 'a#' and 'a%?' do...

Thanks a lot
First ${a%<pattern>} strips the pattern off the end of the contents of the variable. And ? is a pattern that matches a single character. So ${a%?} is $a with the last character missing.

And ${a#<pattern>} strips the pattern off of the front of the variable.

Unlike expr, these are shell built-in's. To run expr, you must fork() and then exec(). Staying with shell built-in's delivers real performance benefits.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed searches a character string for a specified delimiter character, and returns a leading or traili

Hi, Anyone can help using SED searches a character string for a specified delimiter character, and returns a leading or trailing space/blank. Text file : "1"|"ExternalClassDEA519CF5"|"Art1" "2"|"ExternalClass563EA516C"|"Art3" "3"|"ExternalClass305ED16B8"|"Art9" ... ... ... (2 Replies)
Discussion started by: fspalero
2 Replies

2. Shell Programming and Scripting

Testing the length of a string

Hello, Unix-Forums! Is there a command that can check how long a user-entered string is? Please don't give me a code, just the name of the command (playing around yourself is much more fun than just pasting code) edit: I'm sorry, first hit of the forum search gave me the answer. (1 Reply)
Discussion started by: intelinside
1 Replies

3. UNIX for Dummies Questions & Answers

Testing for non-zero length string

Hello, can someone please explain to me why this happens: myserver#echo "$nothing" myserver#if ; then echo "nothing is a zero length string"; fi nothing is a zero length string myserver#if ; then echo "nothing is also a non-zero length string, apparently"; fi nothing is also a non-zero... (5 Replies)
Discussion started by: longjon
5 Replies

4. Shell Programming and Scripting

testing the last character

hi i try to test the last character in a variable (here $i ) assume i=kljlkjlkA it should be KO and lkjljjlT KO if then echo "ending with A" else echo "no A at the end" fi whether i is ending or not with A i got "no A at the end" i tried with simple [ double this is the... (3 Replies)
Discussion started by: Nicol
3 Replies

5. Shell Programming and Scripting

Korn: How to loop through a string character by character

If I have a string defined as: MyString=abcde echo $MyString How can I loop through it character by character? I haven't been able to find a way to index the string so that I loop through it. shew01 (10 Replies)
Discussion started by: shew01
10 Replies

6. Shell Programming and Scripting

Extract the last character of a string

How can I extract the last character of a string (withou knowing how many characters are in that string ! ) (8 Replies)
Discussion started by: annelisa
8 Replies

7. Shell Programming and Scripting

inserting a character between string

i have a file contains like this: i want to create a script that will insert a comma "." after the 10th character so it would be look like this thanks in advance (5 Replies)
Discussion started by: dakid
5 Replies

8. Programming

converting character string to hex string

HI Hi I have a character string which contains some special characters and I need it to display as a hex string. For example, the sample i/p string: ×¥ïA Å gïÛý and the o/p should be : D7A5EF4100C5010067EFDBFD Any pointers or sample code pls. (5 Replies)
Discussion started by: axes
5 Replies

9. Shell Programming and Scripting

bash: testing if string is a number

How do you test if a string is a number? Trying to do something like this: x="AS" if( x is not a number ); then x=0 fi Because I want to do number arithmetic with x. (3 Replies)
Discussion started by: eur0dad
3 Replies

10. UNIX for Advanced & Expert Users

Removing first character in a string

While writing a shell script i happen to store some value in a string. Lets say the value is 59788. Now in this script i want to get the value 9788 removing the first charater 5. The original string length usually remains constant. Is there a single line command to do this or any simple way to... (4 Replies)
Discussion started by: npn
4 Replies
Login or Register to Ask a Question