我分配了一个工作来将所有流程都处理成一个语句。所以我尝试了这个脚本。
#!/bin/bash
a= ps | awk '{print $1}'
echo select $a
所以我得到了这个输出
PID
1838
1839
1840
13226
select
我知道a
变量需要许多参数并且无法插入其中一个,但我无法获取逻辑。
我想要类似这样的输出。
select 1838, 1839, 1840, 13226
提前致谢。
答案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