Assigning * as value in a ksh array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Assigning * as value in a ksh array
# 1  
Old 02-27-2015
Assigning * as value in a ksh array

I want to extract each and single character from a password string and put it in an array.

I tried this :
Code:
set -A password "echo $passwd | awk '{for (i=1; i<=length($1); i++) printf "%s ",substr($1,i,1)}'`

It's working as long that the password string doesn't contains any *

I tried a few thing but no luck. Anyone having an idea ?
# 2  
Old 02-27-2015
There is no need to set it in an array. You can use the substring operator to get each individual character. It works like ${variablename:offset:length} so use 1 for length and give it a value of 0 through length for offset.

This also avoids needing to split on spaces, which allows people to put spaces, wildcards, and other special characters in their passwords without this choking.

Code:
N=2
pass="12345"
echo "${pass:$N:1}"

# 3  
Old 02-27-2015
Thanks for your quick response but its not working on my system. I'm on AIX 7.1

Code:
ce9888@a03d:/users/ce9888 > N=2
ce9888@a03d:/users/ce9888 > pass="12345"
ce9888@a03d:/users/ce9888 > echo "${pass:$N:1}"
ksh: "${pass:$N:1}": 0403-011 The specified substitution is not valid for this command.
ce9888@a03d:/users/ce9888 >

# 4  
Old 02-27-2015
You must be using ksh88, which is 27 years old and counting. This isn't going to be pretty.

Try
Code:
N=1
set -a pass
while [ "$N" -le "${#password}" ]
do
        pass[$N]="`echo \"$password\" | cut -b $N`"
        let N=N+1
done

# 5  
Old 02-28-2015
Quote:
Originally Posted by ce9888
Thanks for your quick response but its not working on my system. I'm on AIX 7.1
Quote:
Originally Posted by Corona688
You must be using ksh88, which is 27 years old and counting.
In AIX (every AIX since 3.2 - the one i started with at the beginning of the nineties) the default login shell is a ksh88 version f. Fortunately there is a ksh93 installed per default (in every AIX since 4.something, ~2000), you just have to start it:

Code:
/usr/bin/ksh93

contains a ksh93 version t on AIX.

@Corona:

even ksh88 understands POSIX process substitution ("$(....)")and can do variable manipulation:

Code:
x="ab*de"

while [ -n "$x" ] ; do
     first="${x%${x#?}}"
     x="${x#?}"
     print - "First: $first \tRest of x: $x"
done

I hope this helps.

bakunin

Last edited by bakunin; 02-28-2015 at 10:45 AM..
This User Gave Thanks to bakunin For This Post:
# 6  
Old 03-02-2015
That's a neat trick to get the first character without using substrings in a crummy shell. I'll remember that.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Assigning DOM Object value to an array

Hi, I have the following code that makes use of a URL that I store in a variable then create a document object below to work on it. $dom = new DOMDocument; @$dom->loadHTML($html); $links = $dom->getElementsByTagName('a'); $links = $dom->getElementsByTagName('a'); ... (0 Replies)
Discussion started by: mojoman
0 Replies

2. Shell Programming and Scripting

Need help on Assigning a Array variable from Background Functions

I have a question on how can I assign a output of a function to a variable which is executed in background. Here is my example $ cat sample_program.sh #!/bin/ksh exec_func () { sleep 1 v=`expr $1 + 100` print $v } export OUT_ARR date for i in 1 2 do OUT_ARR=`exec_func $i` &... (1 Reply)
Discussion started by: mohan_kumarcs
1 Replies

3. Shell Programming and Scripting

Assigning Column Values to ARRAY in ksh

Hi , i have file which is having two fields in it (#delimited) ABC#FILE_01.DAT DEF#FILE_02.DAT i want to write first field values to one array example A_01 and second field values to B_02 array please let me know how to do this ,my final requirement i have send out a mail for each record... (2 Replies)
Discussion started by: kkabc789
2 Replies

4. Shell Programming and Scripting

Reading from a file and assigning to an array in perl

I wrote a simply perl that searched a file for a particualr value and if it found it, rite it and the next three lines to a file. Now I have been asked to check those next three lines for a different value and only write those lines if it finds the second value. I was thinking the best way to... (1 Reply)
Discussion started by: billprice13
1 Replies

5. Emergency UNIX and Linux Support

Assigning zero to element of ksh array.

set -A matched #find referenced files. for i in ${file_names_html} do counter_j=0 for j in ${file_names_minus_index} do match=`cat $i | grep... (1 Reply)
Discussion started by: robin_simple
1 Replies

6. Shell Programming and Scripting

Assigning values for a dynamic array for an input

Hello, Can somebody please give me a snippet for the below requirement. I want to assign the values separeted by a comma to be assigned to a dynamic array. If I give an input (read statement) like abc1,abc2,abc3,abc4,abc5, all these strings abc* should be assigned to an array like below... (2 Replies)
Discussion started by: suneelj
2 Replies

7. Shell Programming and Scripting

Assigning values to an array via for/while loop

I need to do something like this: for i in 1 2 3 4 5; do arr=$(awk 'NR="$i" { print $2 }' file_with_5_records) done That is, parse a file and assign values to an array in an ascending order relative to the number of record in the file that is being processed on each loop. Is my... (2 Replies)
Discussion started by: fiori_musicali
2 Replies

8. Shell Programming and Scripting

Assigning the values to an Array

hi every body, i donot know how to assign a array varible with a file see i having file more file property1 Name property2 Address the above two line are tab Space seperated between the property and its value i want to seperate it and assign to... (1 Reply)
Discussion started by: kkraja
1 Replies

9. Shell Programming and Scripting

perl: Assigning array values..

I have to add a variable value to an array, something like this: ...... @my_array_name = $value_of_this_variable; This doesnt seem to work, any ideas why? Thanks! (4 Replies)
Discussion started by: looza
4 Replies

10. UNIX for Dummies Questions & Answers

Assigning values to an array

The way I've been using arrays currently have been: #!/bin/ksh set -A myArray myArray=value1 myArray=value2 myArray=value3 myArray=value4 Is there a way I can assign values to an array that will automatically place the value into the next element in the array like: myArray=value1... (4 Replies)
Discussion started by: yongho
4 Replies
Login or Register to Ask a Question