Я назначил работу, чтобы взять весь процесс и превратить их в утверждение. Поэтому я попробовал этот скрипт.

#!/bin/bash
a= ps | awk '{print $1}'
echo select $a

Итак, я получаю этот вывод

PID
1838
1839
1840
13226
select 

Я знаю , что переменная принимает много аргументов и не удается вставить в один, но я не могу получить логику.

Я хочу вывод, похожий на этот.

select 1838, 1839, 1840, 13226

Заранее спасибо.

1 ответ1

1

Обновленный ответ

Используйте обратные символы `` или $( ) чтобы обернуть команды, вывод которых будет сохранен как переменная.

Хвост +2, чтобы показать все, кроме первой строки.

Awk добавляет запятую и пробелы между значением

Sed удаляет запятую в конце строки.

#!/bin/bash
a=$(ps | tail +2 | awk '{printf ("%s, ",$1)}' | sed "s/, $//")
echo select $a

Выход

$ ./printpid.sh
select 2293836, 3276802, 6422606, 6750318, 7667882, 7798894, 8716412

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .