GNU/Linux >> Tutoriales Linux >  >> Linux

¿Linux divide la matriz en variables separadas?

He estado programando en MVS durante años y recientemente he estado usando Linux, por lo que mis habilidades con Linux aún no son tan buenas, pero entiendo bien los conceptos de desarrollo.

Lo que estoy tratando de hacer es leer un directorio de archivos y tomar el nombre de todos los archivos con una extensión de .trg. Luego, necesito tomar esos nombres y almacenarlos en variables separadas para poder usarlos más tarde en mi secuencia de comandos para referirme a los componentes y usarlos para nombrar archivos. Obtuve los nombres de los archivos usando el comando de búsqueda:

param=`find *${file_name}*.trg

Esto produjo la variable $param cargada con los valores (ABC1099R ABC1099C) ya que hay dos archivos en el directorio llamados ABC1099R.trg y ABC1099C.trg. Ahora necesito asignar esos valores a variables individuales para poder usarlos más adelante en mi secuencia de comandos. He buscado por todas partes en la web, pero cada ejemplo que encuentro está usando eco para mostrarlos o están usando un ciclo do while y usando los valores individuales dentro del ciclo. Necesito tenerlos asignados a sus propias variables para que estén disponibles para mí más adelante en el script.

Inicialmente probé un bucle for do como este:

for trigger_files in $param; do
    app1=(basename "{trigger_files}" .trg).dat
done

Pero eso solo da la primera aparición app1=ABC1099R

Necesito tener todas las ocurrencias guardadas en su propia variable individual. Podría haber potencialmente 20 nombres de archivo, pero pensé que solo necesitaba que funcionara con dos, por lo tanto, podría manejar muchos.

Respuesta aceptada:

Si está utilizando bash, considere hacerlo a la manera bash.

Su matriz se obtendría de esta manera (sin find externo comando):

params=( *${file_name}*.trg )

y luego recorres la matriz así:

for file in "${params[@]}"; do
    echo "I'm happily reading the beautiful file $file"
done

Si desea eliminar el .trg extensión y reemplácela con .banana :

for file in "${params[@]}"; do
    echo "My gorilla loves the file ${file%.trg}.banana"
done

Este método, con las comillas adecuadas, será 100 % seguro con respecto a archivos con símbolos divertidos en sus nombres.

Observación. Siempre use globbings con shopt -s nullglob o shopt -s failglob .


Linux
  1. Cómo mover un archivo en Linux

  2. Linux – ¿Todo es un archivo?

  3. Leer archivo en matriz?

  4. ¿Cómo convierto una imagen de disco de Linux en un archivo disperso?

  5. ¿Las ediciones de archivos en Linux se guardan directamente en el disco?

Comando Gunzip en Linux

Comando Stat en Linux

¿Qué es umask en Linux?

Cómo escribir datos en un archivo en Linux

Cómo unir varias líneas en una en un archivo en Linux

Variables de entorno de Linux