如何在python中保持数组中的命令输出?

如何在python中保持数组中的命令输出?,python,linux,bash,Python,Linux,Bash,需求是在python中检查用户的diff登录。我能用bash做,但不能用python 这是纯粹的狂欢 check1=$(who -m|awk '{print $1}') check2=$(echo $SUDO_USER) check3=$(id -un) arr=($check1 $check2 $check3) for string in "${arr[@]}" do declare -a output if [[ $string =~ ^[abc][0-9]

需求是在python中检查用户的diff登录。我能用bash做,但不能用python

这是纯粹的狂欢

check1=$(who -m|awk '{print $1}')
check2=$(echo $SUDO_USER)
check3=$(id -un)

arr=($check1 $check2 $check3)
for string in "${arr[@]}"
do
        declare -a output
        if [[ $string =~ ^[abc][0-9] ]];then
         output+=( "${string}" )
        fi
done
if [[ $output =~ ^[dci][0-9] || $chech_user1 =~ 'jenkins' ]];then
export USERID=$output
else
        echo "     Please execute via Your user id"
        exit
fi
我在下面的python中尝试过,有人可以更正、添加或完成吗

#!/usr/bin/env python

import subprocess
import os, sys
import array

if os.geteuid()==0:
        sys.exit("Please execute as userID")

check1=subprocess.Popen("who -m|awk '{print $1}'", stdout=subprocess.PIPE, shell=True)
check1,err=check1.communicate()
check1=check1.rstrip()

check2=subprocess.Popen("echo $SUDO_USER", stdout=subprocess.PIPE, shell=True)
check2,err=check2.communicate()
check2=check2.rstrip()

check3=subprocess.Popen("id -un", stdout=subprocess.PIPE, shell=True)
check3,err=check3.communicate()
check3=check3.rstrip()

arr=array.array(check1,check2,check3)

只需使用方括号[],如下所示:

arr=[check1, check2, check3]

阅读
arr=[check1,check2,check3]
不清楚您希望
array.array()
调用生成什么。
array.array()
的参数应该是类型代码和初始值设定项,而不是三个随机字符串(或三个随机字符串列表)。还不清楚您的shell脚本实际上做了什么,或者您为什么认为它有用。也许试着把它简化成一个简单的句子,解释你得到了什么,你期望什么,为什么你得到的不是你期望的;您似乎希望发现
子流程。运行()
子流程。请检查输出()