Задать вопрос
Kenny00
@Kenny00

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

Есть скрипт/программа, который нужно выполнить 1 командой несколько раз. Постоянно не перепечатывать аргумент. Один из аргументов по сути список.

Приходится делать так 10 раз... (а потом и более...)
appman -f /etc/AlterPro/apps_sys.conf standby unregister --sys-id 3
appman -f /etc/AlterPro/apps_map.conf standby unregister --sys-id 3
appman -f /etc/AlterPro/apps_ctrl.conf standby unregister --sys-id 3
 
. . . 

appman -f /etc/AlterPro/apps_port.conf standby unregister --sys-id 3

При попытке сделать подобное:
exec appman -f /etc/AlterPro/apps_{sys, map, ctrl, port}.conf standby unregister --sys-id 3

Подстановка выполняется, но всё в одну команду, а нужно выполнить раздельно.
Каждый экземпляр отдельно, как будто мы каждый раз вызываем скрипт, с новым параметром.

И такая же, мысль с sudo service {sys, map, ctr, port} restart, перезапустить группу сервисов.

Список будет расти, его можно например, получить из текстового файла. Или команды ls.
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Простой 2 комментария
Решение пользователя Денис Юрьев К ответам на вопрос (4)
dyuriev
@dyuriev
A posteriori
for app in sys map ctrl port; do appman -f /etc/AlterPro/apps_$app.conf standby unregister --sys-id 3; done;


Из файла как то так
for app in $(cat /path/to/file.txt); do appman -f /etc/AlterPro/apps_$app.conf standby unregister --sys-id 3; done;

или while используйте
Ответ написан