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 --help
da 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, usarhead
yawk
para recortar es redundante, y sí, generan el mismo resultado. En su respuesta a continuación, se utiliza--help
en lugar de--version
, en cuyo caso,head
yawk
es 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--help
sólo #. #. # Y--version
que produce #. #. # r # (versión con información de revisión).vboxmanage
solí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 --version
puede imprimir la versión.Puedes probar esto,
o
Cómo funciona
Paso 1
virtualbox --help
le 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 1
imprime solo la primera línea. verman head
para más. En esta etapa, la salida es soloPaso 3
| awk '{print $NF}'
Nuevamente, las cosas restantes se pasan a
awk
. En esta etapa,awk
ve 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 awk
para 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