Я довольно зеленый, когда дело доходит до grep
, может кто-нибудь указать, как я могу получить массив в bash
списка имен снимков ( ПРИМЕЧАНИЕ: только имена), когда я делаю lxc info mycontainer
?
Мои текущие результаты:
root@hosting:~/LXC-Commander# lxc info mycontainer --verbose
Name: mycontainer
Remote: unix:/var/lib/lxd/unix.socket
Architecture: x86_64
Created: 2017/05/01 21:27 UTC
Status: Running
Type: persistent
Profiles: mine
Pid: 23304
Ips:
eth0: inet 10.58.122.150 vethDRS01G
eth0: inet6 fd9b:16e1:3513:f396:216:3eff:feb1:c997 vethDRS01G
eth0: inet6 fe80::216:3eff:feb1:c997 vethDRS01G
lo: inet 127.0.0.1
lo: inet6 ::1
Resources:
Processes: 1324
Memory usage:
Memory (current): 306.63MB
Memory (peak): 541.42MB
Network usage:
eth0:
Bytes received: 289.16kB
Bytes sent: 881.73kB
Packets received: 692
Packets sent: 651
lo:
Bytes received: 1.51MB
Bytes sent: 1.51MB
Packets received: 740
Packets sent: 740
Snapshots:
2017-04-29-mycontainer (taken at 2017/04/29 21:54 UTC) (stateless)
2017-04-30-mycontainer (taken at 2017/04/30 21:54 UTC) (stateless)
2017-05-01-mycontainer (taken at 2017/05/01 21:54 UTC) (stateless)
С моей конечной целью просто содержать такой массив, как: 2017-04-29-mycontainer 2017-04-30-mycontainer 2017-05-01-mycontainer
С помощью lxc list --format=json
вы получаете документ JSON с большим количеством информации обо всех доступных контейнерах.
lxc list mycontainer --format=json
ограничивает это контейнерами, имена которых начинаются со строки mycontainer
(используйте 'mycontainer$'
для точного соответствия).
Разбор JSON, как правило, безопаснее, чем разбор текстового документа почти в произвольной форме.
Чтобы извлечь имена снимков , используя jq
:
$ lxc list mycontainer --format=json | jq -r '.[].snapshots[].name'
Это даст вам список, подобный
2017-04-29-mycontainer
2017-04-30-mycontainer
2017-05-01-mycontainer
Чтобы поместить это в массив в bash
:
snaps=( $( lxc list mycontainer --format=json | jq -r '.[].snapshots[].name' ) )
Просто имейте в виду, что если вы сделаете это, имена снимков со специальными для оболочки символами (*?[
) приведут к подстановке имен файлов. Вы можете предотвратить это с помощью set -f
перед командой (и set +f
после).
Если вы просто хотите перебрать снимки:
lxc list mycontainer --format=json | jq -r '.[].snapshots[].name' |
while read snap; do
# do something with "$snap"
done