Trying to take a string and break each letter into a separate variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Trying to take a string and break each letter into a separate variable
# 8  
Old 10-01-2011
Quote:
Originally Posted by Lakris
Hi!
I hope this may help,

Code:
for x in $(seq 1 ${#mystr}) do                
eval "echo letter$x=${mystr:$((x-1)):1}"
done

It uses parameter substitution which is very handy when working with strings, and also some goodies like seq and arithmetics.
Best regards,
Lakris
Either that eval serves no purpose or that echo is unintended, but both of them together result in a pointlessly convoluted printing statement that is vulnerable to shell metacharacters.

echo "letter$x=${mystr:$((x-1)):1}" accomplishes the same thing in a safe, simple manner.

Anyone not using linux may find that their system does not have seq, a non-standard gnu tool. Also, the use of echo can be problematic. Aside from the lack of portability (not all echoes support the same options), if the value of the parameter expansion begins with a dash, it can cause problems. printf is a superior tool when dealing with unknown data.

To simply print out the letters one per line:
Code:
w=$word
while [ "$w" ]; do
    printf %c\\n "$w"
    w=${w#?}
done

To assign each letter to a variable whose name ends with an incrementing number (starting with 1):
Code:
w=$word i=0
while [ "$w" ]; do
    eval "letter$((i+=1))=\${w%\$w{#?}}"
    w=${w#?}
done

Regards,
Alister

Last edited by alister; 10-01-2011 at 03:08 PM.. Reason: To correct eval solution
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk separate field by letter and ";"

i have a 2 fields in my DB ID25333,1429291340lNormPUC-AP_MEX_UFM-GOL_44;PUC-AP_VEX_UFM-ROL_55;PUCAP_MEX_UFM-DOJ_49; ID55555,1429291340lNormPUC-AP_PPP_UFM-HOL_44;PUC-AF_GEX_UJM-SOL_45;PUCAP_MEX_UFM-DOJ_59;and i need separate like this ID25333,PUC-AP_MEX_UFM-GOL_44; ... (5 Replies)
Discussion started by: Axl_north
5 Replies

2. Shell Programming and Scripting

Need help with awk statement to break nth column in csv file into 3 separate columns

Hello Members, I have a csv file in the format below. Need help with awk statement to break nth column into 3 separate columns and export the changes to new file. input file --> file.csv cat file.csv|less "product/fruit/mango","location/asia/india","type/alphonso" need output in... (2 Replies)
Discussion started by: awk-admirer
2 Replies

3. Shell Programming and Scripting

Setting letter as variable

I need to pass letter like "c" for "-copy" and need to read by variable $sel_mod, My I know the good way of writing the script. Example: Select one of the Clone Mode ( '-copy', '-differential', '-precopy', '-nopcopy') Type the Clone mode : c Thanks in advance, Ashan ... (6 Replies)
Discussion started by: ashanabey
6 Replies

4. Shell Programming and Scripting

change each letter of a string

Is there a way to change each letter of a string to the next one in the alphabet, so that a becomes b and f becomes g, and digits become one unit bigger - 4 becomes 5 and 9 becomes 0. I want to change strings like ben123 to cfo234. (5 Replies)
Discussion started by: locoroco
5 Replies

5. Shell Programming and Scripting

Trying to capitalize first letter of every word in Variable

Total Bash noob, have been successful in doing my script by searching and looking at examples, but I need some assitance with this one, just can't figure it out. In the Bash script I am trying to capitalize the first letter of every word in a string, ideally not changing other capitalization. ... (5 Replies)
Discussion started by: randyharris
5 Replies

6. Shell Programming and Scripting

First Letter in a String to be capitalized

Is there a way to cnvert first letter alone in a string to upper case. For eg: diamond should be converted to Diamond. Thanks in Advance, Kinny (6 Replies)
Discussion started by: kinny
6 Replies

7. Shell Programming and Scripting

Extract the letter from string

Hi, Pl help me. User is entering the values for the given input Enter keys: secret1 secret2 secret3 can i extract the last digit of each values in the keys.. here for ex. 1 2 3 can we get this using shell script? (22 Replies)
Discussion started by: balamv
22 Replies

8. Shell Programming and Scripting

Finding a letter in a string

How to check whether a particular string contains dot or not? Here I can not use grep as the string is not in a file. I will get this string from user input Thanks, (2 Replies)
Discussion started by: balamv
2 Replies

9. Shell Programming and Scripting

Break a file into separate files

Hello I am facing a scenario where I have a file with XML content and I am running shell script over it. But the problem is the XML is getting updated with new services. In the below scenario, my script takes values from the xml file from one service name say ABCD. Since there are multiple, it is... (8 Replies)
Discussion started by: chiru_h
8 Replies

10. Shell Programming and Scripting

get only two letter from any string

I want get middle two latter of any string. Input: var="070108" output: var1="01" please help. (2 Replies)
Discussion started by: rinku
2 Replies
Login or Register to Ask a Question