Исходя из значений во втором столбце, мне нужно выполнить другую команду для этих значений.
[root@box ~]# for i in $(openstack server list --all -c ID -f value); do openstack server show $i -f value -c name -c project_id | xargs printf '%-60s %s\n'; done
cf1-0 ebf0f23f424c4417afd3e7bbf4e3900f
sf1-3 ebf0f23f424c4417afd3e7bbf4e3900f
sf1-2 ebf0f23f424c4417afd3e7bbf4e3900f
sf1-0 ebf0f23f424c4417afd3e7bbf4e3900f
Вот пример того, что я пытаюсь сделать.
[root@box ~]# for i in $(openstack server list --all -c ID -f value); do openstack server show $i -f value -c name -c project_id | xargs printf "%-60s eval(openstack project show %s -f value -c name)"; done
cf1-0 eval(openstack project show ebf0f23f424c4417afd3e7bbf4e3900f -f value -c name)
Подстановка из второго% s в printf работает правильно, но я не могу понять, как выполнить команду.
Команда должна быть выполнена в той же оболочке, и я не могу использовать переменные окружения.
Спасибо.
** ВЫХОД КОМАНД **
Здесь, - c var1 - c var2 можно разместить в любом порядке. -f означает только вывод значений, а не идентификатора.
[root@box~]# openstack server list --all -c Name -c ID -f value
2534ce5a-04da-4c7d-9ad5-b7bc466ae612 cf1-0
[root@box ~]# openstack server show 2534ce5a-04da-4c7d-9ad5-b7bc466ae612 -f value -c name -c project_id
cf1-0
ebf0f23f424c4417afd3e7bbf4e3900f
[root@box ~]# openstack project show ebf0f23f424c4417afd3e7bbf4e3900f -f value -c name
core
Desired output
===============
cf1-0 core