Estoy escribiendo un script Bash para almacenar el número de versión de Virtualbox , pero no puedo tener éxito.
Mi guión es:
#!/bin/bash
installed_virtualbox=$(virtualbox --version) # --version this is what I want to change
Lo intenté
virtualbox --version
virtualbox -v
virtualbox -V
virtualbox --Version
Todo parece abrir el virtualbox en lugar de la salida.
virtualbox --helpda el número de versión, pero la salida es demasiado larga para almacenarla en variable y usarla más tarde.
bash
virtualbox
Braiam
fuente
fuente


echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')yecho $(vboxmanage --version)cual es la diferencia no son lo mismo?--version, que genera solo una línea y un campo; por lo tanto, usarheadyawkpara recortar es redundante, y sí, generan el mismo resultado. En su respuesta a continuación, se utiliza--helpen lugar de--version, en cuyo caso,headyawkes de hecho necesario el recorte ... pero aún así obtener información menos precisa, ya que la versión que se encuentra a través de--helpsólo #. #. # Y--versionque produce #. #. # r # (versión con información de revisión).vboxmanagesolía venir con otra información, por eso lo propuse. Puedes ver la edición , OP aceptó mi sugerencia. ¿Por qué haría las cosas complejas :)vbox-img --versionpuede imprimir la versión.Puedes probar esto,
o
Cómo funciona
Paso 1
virtualbox --helple da una salida larga que dice muchas opciones, etc. Pero sus primeras líneas son como,
Paso 2
| head -n 1|se llama pipa. Tiene una gran aplicación en la línea de comandos. Pasa toda la expresión al siguiente comandohead.head -n 1imprime solo la primera línea. verman headpara más. En esta etapa, la salida es soloPaso 3
| awk '{print $NF}'Nuevamente, las cosas restantes se pasan a
awk. En esta etapa,awkve la línea completa como combinaciones de pocos campos separados por espacio e imprime solo el último campo de la expresión anterior. Entonces solo obtienes la versión. Miraman awkpara más.fuente
puede conocer la versión del paquete instalado con dpkg y grep con tubería
fuente
Entonces ejecute el siguiente comando,
Salida:
awk '/Oracle/{ print $5 }'Busca la línea que consiste en la palabra
Oracle. En caso afirmativo, el comando toma la quinta columna en esa línea y la redirige a la salida estándar. Si dicha palabra no estaba presente en ninguna línea, no muestra nada.fuente