Команда запуска на основе вывода другой команды

ОС: AIX 7100-04-1216

Поэтому в основном я пытаюсь написать цикл for, который видит, какие volumegroups у меня есть в моей системе, какие файловые системы находятся в этих группах томов и каков размер каждой из этих файловых систем.

У меня есть следующий код:

for LINE in `lsvg` ; do echo "Volume Group: "${LINE} for LINE2 in `lsvgfs ${LINE}` ; do echo "`lsvgfs ${LINE}` \n" df -g ${LINE2} done done 

Выход lsvg

 rootvg nimvg 

Вывод lsvgfs (для rootvg)

 / /usr 

Выход lsvgfs (для nimvg)

 /export/nim/lpp_source /export/nim/spot 

Выход df -g (для / в volumegroup rootvg)

 Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/hd4 5.25 2.86 46% 9957 2% / 

Выход df -g (для / usr в volumegroup rootvg)

 Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/hd2 2.00 0.17 92% 43194 50% /usr 

Выход df -g (для / export / nim / lpp_source в volumegroup nimvg)

 Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/fslv02 10.00 8.24 18% 597 1% /export/nim/lpp_source 

Выход df -g (для / export / nim / spot в volumegroup nimvg)

 Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/hd4 5.25 2.86 46% 9957 2% / 

Что он должен делать:

 Volume Group: rootvg File System: / /dev/hd4 5.25 2.86 46% 9957 2% / File System: /usr /dev/hd2 2.00 0.17 92% 43194 50% /usr File System: /var Volume Group: nimvg File system: /export/nim/lpp_source /dev/fslv02 10.00 8.24 18% 597 1% /export/nim/lpp_source File system: /export/nim/spot /dev/hd4 5.25 2.86 46% 9957 2% / 

Что я получаю:

 Volume Group: rootvg / /usr Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/hd4 5.25 2.86 46% 9957 2% / / /usr Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/hd2 2.00 0.17 92% 43194 50% /usr Volume Group: nimvg /export/nim/lpp_source /export/nim/spot Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/fslv02 10.00 8.24 18% 597 1% /export/nim/lpp_source /export/nim/lpp_source /export/nim/spot Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/hd4 5.25 2.86 46% 9957 2% / 

One Solution collect form web for “Команда запуска на основе вывода другой команды”

Сначала обратите внимание на стиль. Использование цикла for для итерации по линиям вывода редко является хорошей идеей. Цикл for будет разбивать свой вход на пробелы, так что, если у вас более одного слова в строке, он разбивает каждый на другую переменную. Вы должны использовать, while вместо этого, поскольку это имеет дело с пробелами более изящно. Кроме того, обычно используется $(command) вместо `command` .

Это, вероятно, не ваша проблема. Основная проблема заключается в том, что вы эхом lsvgfs ${LINE} результаты lsvgfs ${LINE} для каждой строки результатов lsvgfs ${LINE} :

 for LINE2 in `lsvgfs ${LINE}` ; do echo "`lsvgfs ${LINE}` \n" done 

Итак, вы, конечно, получаете эти строки дважды:

 / /usr 

Попробуйте это вместо этого:

 lsvg | while read LINE; do echo "Volume Group: ${LINE}" lsvgfs "${LINE}" | while read LINE2; do echo "File System: ${LINE2}" df -g ${LINE2} done echo "" done 
  • печать специальных символов в awk-выходе
  • Как получить начальное время для несуществующего процесса в AIX?
  • Разный хеш-код при подключении трубопровода «sha1sum» к выходу «tar»
  • ldd: не удается найти библиотеку для xl c скомпилированной двоичной, но может для gcc скомпилированных двоичных файлов в AIX
  • Есть ли команда в AIX, похожая на fallocate в Linux
  • переименуйте 10 наиболее недавно измененных файлов в AIX
  • Почему пользователь запрашивает пароль в AIX?
  • Как убить призрачный процесс? AIX 6.1
  • Человеко-читаемый вывод ls в AIX?
  • Отображение строк за последние 10 минут с определенным рисунком в журналах
  • Убивание процесса cron и предотвращение его перезапуска
  • Interesting Posts

    Cinnamon: фоновый рисунок рабочего стола из вложенной структуры каталогов?

    Состояние ключа переключения Fn

    Список всех подключенных устройств в FreeBSD

    Использовать git pull через команду ssh invoke

    Проигрыватель командной строки, который выходит сразу после завершения воспроизведения файла?

    Расширение Bash шестнадцатеричное

    Повторное использование сеанса ssh для повторяющихся команд rsync

    Что делает опция -b при использовании команды `at`, если что?

    Локальные SSL-сертификаты в Chrom (e / ium) 63

    Почему я могу ping IP-адреса от 127.0.0.1 до 127.255.255.254?

    Почему моя звуковая карта CMI8738 не работает?

    SSH + Sudo + Ожидайте в сценарии Bash: Запустите команду с sudo на удаленной машине

    Преобразование цветов шрифта PDF в монохромный черный

    обзор кода: автоматическое завершение для псевдонимов bash

    запуск исполняемого файла параллельно путем деления дерева входных каталогов

    Linux и Unix - лучшая ОС в мире.