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
.