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

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in