porfavooor ayudenmee con este script

Imagen de galiux
0 puntos

Saludos a Todos pues sin tanto rodeo, tengo un script que me guarda en un arreglo la salida del comando ls, de esta manera:

arreglo[1]=$(ls)

pero esto me pone en un solo subindice el resultado, digamos que esta bien, ahora lo que quiero es separar las cadenas, por ejemplo; si el arreglo tiene lo siguiente:

arreglo[1]={archivo.txt archivo2.txt letras.txt}

y lo que quiero conseguir es extraer las cadenas, para que queden cada una en un solo subindice, o bien una variable.

Si alguien me puede ayudar se lo agradecere de verdad....

exit

Imagen de TaliesinLp
+1
0
-1

No he utilizado el comando awk pero se define como un auténtico lenguaje de procesador de textos, y por lo que se tiene bastante potencia.
Por ejemplo: $echo Hola mundo|awk '{print $1, "¿Qué tal el", $2 "?"}' devuelve Hola ¿Que tal el mundo? o sea que separa las palabras con sólo $1 y $2 sobre una entrada.

Otra idea sería que metieras la salida de ls en un fichero(temporal) en vez de en una variable en el que los ficheros estuvieran en líneas ls -1 evitando de este modo que se confunda un espacio en el nombre de un fichero con dos ficheros distintos, luego leer este fichero por líneas ya sea con este comando o con otro.

Siento no poder ayudarte más, pero si lo implementas con awk podrías postearlo para saber más sobre su uso.

Un saludo,

+1
0
-1
Imagen de keygen
+1
0
-1

esta es una manera de leer el contenido de lo que arroja el comando ls, espero que te sirva.

------------cut here ------------------
#!/bin/bash

CAD=`ls`

for token in $CAD
do
echo "$token"
done
------------------ end file -------------
--
[vivie siempre libre]

+1
0
-1

--
[vivie siempre libre]

Imagen de cjadt
+1
0
-1

Wenas

Me encantan los scripts, a mi juego me llamaron :-)

1- arreglo[1]=$(ls) # esto no es un array, es un índice.
2- ke pasa si tenemos un nombre de directorio con un espacio como dice TaliesinLp?
digamos '/tmp/mi dir'
CAD=`ls`
for token in $CAD; do
    echo "$token"
done
La primera instancia de $token vale 'mi', la segunda 'dir' y así...

Esto te propongo:
__________________
#!/bin/bash

# declaramos un array
declare -a LISTA=(`ls -b`)
# usamos el modificador -b para ke en el caso de encontrar un nombre
# como 'mi dir', lo imprima así 'mi\ dir'
# accedemos a los índices del array
echo ${LISTA[0]}
echo ${LISTA[1]}
#...
# asignamos a variables
ARCH_1=${LISTA[0]}
ARCH_2=${LISTA[1]}
__________________
Para usar un bucle se complica porke volvemos al mismo punto,
${LISTA[0]} podría ser 'mi dir' y en cada ciclo del bucle lo
parte en dos...
Habría ke pensar un poco mas, al menos contribuí con algo...

Christian

+1
0
-1