for i in `ps aux | grep /usr/bin/x2goruncommand | awk '{print $1,$13;}'`; do
server=`echo $i | cut -f1`
port=`echo $i | cut -f2`
su -u ${server} -c "DISPLAY:{$port}"
done
我正在尝试循环ps和awk。循环应该只返回5个结果但是在我上面的尝试中,结果变为10.本质上我的$ server变量在一行中返回,然后我的$ port变量在下一行中返回。我试图在一行中运行一个命令,在一行中包含$ server和$ port变量。
这是ps aux命令的输出:http://i.imgur.com/USTaNEk.png
答案 0 :(得分:1)
这可能会有所帮助
while read s p;
do
echo $s $p;
done < <(ps aux ...)
用你的行动取代回声。
答案 1 :(得分:1)
不要使用for
循环来迭代行 - for
循环用于迭代字。在第一次迭代中,$ i =“main2”,然后$ i =“5114”,然后$ i =“0.0”,依此类推。
您需要while read
循环
ps aux | grep /usr/bin/x2goruncommand | awk '{print $1,$13}' |
while read server port; do
su -u "$server" -c "DISPLAY:$port"
done