Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

307
Vistas
bash - ¿Cómo crear un menú de disco/partición?

Probé un código de unix.com , modificándolo para que actúe como un selector de dispositivo.

 #!/bin/bash count=0 for device in `fdisk -l | sed -n '/^[/]/p' | awk '{print $1}'` do count=$((count+1)) dev[$count]=$device echo "$count: $device" done echo "Select volume (numbers 1-$count):" read selected_number selected_device=$dev[$selected_number] echo "The device you selected is: $selected_device"

por alguna razón, la línea selected_device=$dev[$selected_number] no funciona como se esperaba. Me imagino que cometí un error de sintaxis de principiante.

la salida que da es

 1: /dev/nvme0n1p1 2: /dev/nvme0n1p2 3: /dev/nvme0n1p3 4: /dev/nvme0n1p4 5: /dev/nvme0n1p5 6: /dev/nvme0n1p6 7: /dev/nvme0n1p7 8: /dev/mmcblk0p1 Select volume (numbers 1-8): 5 The device you selected is: [5]

mientras que esperaría algo como The device you selected is: /dev/nvme0n1p5

(Estoy ejecutando el script como sudo, por cierto)

Gracias de antemano por tu ayuda.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Algo como esto,

 #!/usr/bin/env bash count=0 for device in `fdisk -l | sed -n '/^[/]/p' | awk '{print $1}'`; do count=$((count+1)) dev[$count]=$device printf '%s: %s\n' "$count" "$device" done read -rp "Select volume (numbers 1-$count): " selected_number printf 'The device you selected is: %s\n' "${dev[$selected_number]}"

Aunque sugiero usar un ciclo while + read con Process Substitution.

 while IFS= read -r device; do count=$((count+1)) dev[$count]=$device printf '%s: %s\n' "$count" "$device" done < <(fdisk -l | sed -n '/^[/]/p' | awk '{print $1}')

También la parte sed y awk pueden ser solo una awk

 fdisk -l | awk '/^[/]/{print $1}'
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda