Я пишу сценарий Bash для хранения номера версии Virtualbox , но не удается.
Мой сценарий:
#!/bin/bash
installed_virtualbox=$(virtualbox --version) # --version this is what I want to change
Я пытался
virtualbox --version
virtualbox -v
virtualbox -V
virtualbox --Version
кажется, все открывают виртуальную коробку вместо вывода.
virtualbox --help
дает номер версии, но вывод слишком длинный, чтобы хранить его в переменной и использовать позже.
bash
virtualbox
Braiam
источник
источник
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')
аecho $(vboxmanage --version)
какая разница? разве они не одинаковы?--version
, который выводит только одну строку и одно поле; поэтому использованиеhead
иawk
для обрезки является излишним, и да, они выдают один и тот же результат. В своем ответе ниже вы используете--help
вместо--version
, в этом случаеhead
иawk
обрезка действительно необходима ... но вы все равно получаете менее точную информацию, так как найденная с помощью версии--help
только #. #. # Vs,--version
что приводит к #. #. # r # (версия с информацией о ревизии).vboxmanage
приходил с другой информацией, поэтому я и предложил это. Вы можете увидеть редактирование , OP принял мое предложение. Зачем мне всеvbox-img --version
можно печатать и версию.Вы можете попробовать это,
или же
Как это устроено
Шаг 1
virtualbox --help
дает длинный вывод, говоря много вариантов и т. д. Но его самые первые строки, как,
Шаг 2
| head -n 1
|
называется труба. У этого есть большое применение в командной строке. Он передает все выражение следующей командеhead
.head -n 1
печатает только первую строку. смотритеman head
больше. На этом этапе вывод толькоШаг 3
| awk '{print $NF}'
Снова оставшиеся вещи передаются
awk
. На этом этапеawk
вся строка рассматривается как комбинация нескольких полей, разделенных пробелом, и печатает только последнее поле вышеприведенного выражения. Таким образом, вы получаете только версию. Смотритеman awk
больше.источник
вы можете узнать версию пакета, установленного с dpkg и grep с конвейером
источник
Запустите следующую команду:
Выход:
awk '/Oracle/{ print $5 }'
Ищет строку, состоящую из слова.
Oracle
Если да, то команда выбирает пятый столбец в этой строке и перенаправляет его на стандартный вывод. Если такого слова не было в каких-либо строках, то ничего не отображается.источник