5

我有一个 bash 脚本,它返回一个列表,这是我想要的,但我需要将结果放在一个变量中,以便我可以在 for 循环中一次对它们进行操作。

#!/bin/bash
processID="ps aux | grep `date +"%b"` | gawk '{print \$2}'"

eval $processID

如何将 eval 的结果分配给变量?谢谢

4

2 回答 2

2
pid=$( ps aux | grep `date +"%b"` | awk '{print $2}' )
于 2012-04-06T21:46:16.940 回答
0

由于您已经在使用 awk,因此您可以不再需要 grep。"$" 不需要转义,因为扩展不会出现在单引号内。

pid=$(ps aux | awk -vdate=$(date +%b) '$0 ~ date { print $2 }')

如果您希望返回多个 pid,请使用数组:

pids=($(ps aux | awk -vdate=$(date +%b) '$0 ~ date { print $2 }'))

for pid in "${pids[@]}"; do
   ...
done
于 2012-04-06T22:12:07.737 回答