Visit Our UNIX and Linux User Community


Compare string length to a number


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Compare string length to a number
# 1  
Old 08-22-2016
Blade Compare string length to a number

Hi,
I want to compare strings length to a number but i am getting error. I want first name should be length of 8.
Please help.

Code:
#bin !/bin/bash
clear
echo -n "Enter name "
read name
IFS=_
ary=($name)
for key in "${!ary[@]}"; do echo "$key${ary[$key]}"; done
##First name should be equal to 8 digits
var=${ary[0]}
l1=${#var}
echo "$l1"
if [ "$l1" == 8]
then 
echo "Length Matching"
else
echo "Not Matching"
if

# 2  
Old 08-22-2016
Quote:
Originally Posted by rajneesh4U
Hi,
I want to compare strings length to a number but i am getting error. I want first name should be length of 8.
Please help.
Code:
#bin !/bin/bash
clear
echo -n "Enter name "
read name
IFS=_
ary=($name)
for key in "${!ary[@]}"; do echo "$key${ary[$key]}"; done
##First name should be equal to 8 digits
var=${ary[0]}
l1=${#var}
echo "$l1"
if [ "$l1" == 8]
then 
echo "Length Matching"
else
echo "Not Matching"
if

Hello rajneesh4U,

As a starter, could you please change if [ "$l1" == 8] to if [[ "$l1" == 8 ]] and let us know how it goes then(Not tested complete script though).

Thanks,
R. Singh
# 3  
Old 08-22-2016
Hi,
Still code is showing same error. I have changed below code as per your suggestion, but still not working.
Code:
#bin !/bin/bash
clear
echo -n "Enter name "
read name
IFS=_
ary=($name)
for key in "${!ary[@]}"; do echo "$key${ary[$key]}"; done
##First name should be equal to 8 digits
var=${ary[0]}
l1=${#var}

echo "$l1"

if [ ["$l1" == 8]]
then 
echo "Length Matching"
else
echo "Not Matching"
if

# 4  
Old 08-22-2016
Merely posting that there are errors is not helping much.
  1. What errors do you get on running this script?
  2. What did you understand from the errors?

Last edited by rbatte1; 08-25-2016 at 08:44 AM.. Reason: Converted to formatted number-list
This User Gave Thanks to balajesuri For This Post:
# 5  
Old 08-22-2016
Hi.

Does this help?
Code:
#!/bin/bash
#bin !/bin/bash
# clear
set -x
echo -n "Enter name "
read name
IFS=_
ary=($name)
for key in "${!ary[@]}"; do echo "$key${ary[$key]}"; done
##First name should be equal to 8 digits
var=${ary[0]}
l1=${#var}
echo "$l1"
if [ "$l1" == 8 ]
then 
echo "Length Matching"
else
echo "Not Matching"
# if
fi

See man bash for questions.

Bestr wishes ... cheers, drl
# 6  
Old 08-22-2016
You jumped from the frying pan into the fire. if [ ["$l1" == 8]] is as wrong as if [ "$l1" == 8] is.
- either needs a space after the 8
- integer comparisons should be done with the -eq operator. While results are identical for single digit numbers, 100 would compare below 20 for string operations.
- there should NOT be any space between the [[.

Try
Code:
if [ "$l1" -eq 8 ]

or
Code:
[[ "$l1" -eq 8 ]]

.
This User Gave Thanks to RudiC For This Post:
# 7  
Old 08-22-2016
If you want to do what is in the comments:
Code:
##First name should be equal to 8 digits

Code:
case $var in 
  ([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
    echo "The first part of name equals 8 digits"
  ;;
  (*)
    echo "The first part of name does not equal 8 digits"
esac

instead of $var you could also use ${name_*%%}

Or you could use:
Code:
case $name in 
  ([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_)
   echo "The first part of name equals 8 digits"
  ;;
  (*)
    echo "The first part of name does not equal 8 digits"
esac


Last edited by Scrutinizer; 08-23-2016 at 11:03 PM.. Reason: Changed $i1 to $var - tanks drl
This User Gave Thanks to Scrutinizer For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #361
Difficulty: Medium
The rmdir command remove directories, even if they are not empty.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Concatenate a string and number and compare that with another string in awk script

I have below code inside my awk script if ( $0 ~ /SVC IN:/ ) { svc_in=substr( $0,23 , 3); if (msg_start == 1 && msg_end == 0) { msg_arr=$0; } } else if ( $0 ~ /^SVC OUT:/ ) { svc_out=substr( $0, 9, 3); if (msg_start == 1 && msg_end == 0) ... (6 Replies)
Discussion started by: bhagya123
6 Replies

2. Shell Programming and Scripting

Pass column number as variable to awk and compare with a string.

Hi All, I have a file test.txt. Content of test.txt : 1 vinay se 2 kumar sse 4 kishore tl I am extracting the content of file with below command. awk '$2 ~ "vinay" {print $0}' test.txt Now instead of hardcoding $2 is there any way pass $2 as variable and compare with a... (7 Replies)
Discussion started by: Girish19
7 Replies

3. Shell Programming and Scripting

[awk]compare a number in a string with a list

Hi, I have a program written in awk and I want to extend it to do another task. My program is a list of CVS log reports of a repository. For each file, I have some fields. One of the fields is the comment field. I want to know how I can check if a comment (which is a free text field)... (8 Replies)
Discussion started by: sandeepk1611
8 Replies

4. UNIX for Dummies Questions & Answers

compare 2 very large lists of different length

I have two very large datasets (>100MB) in a simple vertical list format. They are of different size and with different order and formatting (e.g. whitespace and some other minor cruft that would thwart easy regex). Let's call them set1 and set2. I want to check set2 to see if it contains... (2 Replies)
Discussion started by: uiop44
2 Replies

5. Shell Programming and Scripting

awk - replace number of string length from search and replace for a serialized array

Hello, I really would appreciate some help with a bash script for some string manipulation on an SQL dump: I'd like to be able to rename "sites/WHATEVER/files" to "sites/SOMETHINGELSE/files" within the sql dump. This is quite easy with sed: sed -e... (1 Reply)
Discussion started by: otrotipo
1 Replies

6. UNIX for Dummies Questions & Answers

Read a string with leading spaces and find the length of the string

HI In my script, i am reading the input from the user and want to find the length of the string. The input may contain leading spaces. Right now, when leading spaces are there, they are not counted. Kindly help me My script is like below. I am using the ksh. #!/usr/bin/ksh echo... (2 Replies)
Discussion started by: dayamatrix
2 Replies

7. Shell Programming and Scripting

How to Compare two files depend on line length Chars

I need to compare two files with exactly same length as example: - File1 contain 500 records with length of 640 chars of each line. File2 contain 1500 records with length of 640 chars of each line. I need get an output to be written in File3 which will contain 1000 records difference. but... (4 Replies)
Discussion started by: elj3dah
4 Replies

8. Shell Programming and Scripting

how can i compare te length of the string

how can i campare te length of the string $var = unix if ( $var -eq 4 ) then.. is it right (6 Replies)
Discussion started by: mail2sant
6 Replies

9. Shell Programming and Scripting

read string, check string length and cut

Hello All, Plz help me with: I have a csv file with data separated by ',' and optionally enclosed by "". I want to check each of these values to see if they exceed the specified string length, and if they do I want to cut just that value to the max length allowed and keep the csv format as it... (9 Replies)
Discussion started by: ozzy80
9 Replies

10. Shell Programming and Scripting

sed problem - replacement string should be same length as matching string.

Hi guys, I hope you can help me with my problem. I have a text file that contains lines like this: 78 ANGELO -809.05 79 ANGELO2 -5,000.06 I need to find all occurences of amounts that are negative and replace them with x's 78 ANGELO xxxxxxx 79... (4 Replies)
Discussion started by: amangeles
4 Replies

Featured Tech Videos