Vinnaren i pepparkakshustävlingen!
2011-04-04, 21:49
  #1
Medlem
binics avatar
hur skapar jag en array av det användaren matar in, tex ordet test ska skapa en array
array[0] = t
array[1] = e
array[2] = s
array[3] = t

Detta löser halva problemet:
Kod:
read var
echo $var | fold -w1

Utskriften som i exemplet ovan blir:
t
e
s
t

Villket är bra, men hur skickar jag varje bokstav till arrayen?
Citera
2011-04-05, 02:29
  #2
Medlem
rwxXstugos avatar
Här är en variant som inte på något sätt är optimal.

Kod:
#! /bin/bash

#Mata in sträng och spara i variabeln STRING
echo -n "Mata in: "
read STRING

#Tilldela variabeln l längden av STRING minus 1 
#(eftersom arrays börjar på noll...)
l=${#STRING}-1

#Deklarera arrayen MYARRAY med längden l
declare -a MYARRAY[$l]

#Loopen tilldelar arrayen MYARRAY motsvarande karaktär i STRING
for (( i = 0; i <= $l ; i++ ))
do 
	MYARRAY[$i]="${STRING:$i:1}"
done

#Klart! Skriv ut för att se att det fungerar
for (( i = 0; i <= $l ; i++ ))
do
	echo ${MYARRAY[$i]}
done

Den här sidan kanske kan vara hjälpsam.
Citera
2011-04-05, 17:23
  #3
Medlem
binics avatar
Citat:
Ursprungligen postat av rwxXstugo
Här är en variant som inte på något sätt är optimal.

Kod:
#! /bin/bash

#Mata in sträng och spara i variabeln STRING
echo -n "Mata in: "
read STRING

#Tilldela variabeln l längden av STRING minus 1 
#(eftersom arrays börjar på noll...)
l=${#STRING}-1

#Deklarera arrayen MYARRAY med längden l
declare -a MYARRAY[$l]

#Loopen tilldelar arrayen MYARRAY motsvarande karaktär i STRING
for (( i = 0; i <= $l ; i++ ))
do 
	MYARRAY[$i]="${STRING:$i:1}"
done

#Klart! Skriv ut för att se att det fungerar
for (( i = 0; i <= $l ; i++ ))
do
	echo ${MYARRAY[$i]}
done

Den här sidan kanske kan vara hjälpsam.

Strålande. Tack!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback