将.bashrc函数从Python2.7移植到Python3

将.bashrc函数从Python2.7移植到Python3,bash,python-2.7,python-3.x,Bash,Python 2.7,Python 3.x,您好,有人能解释一下从python2.7到3移植这个函数吗,因为我不能这么做 function cpuusg(){ echo print `top -n 1 | tr -s " " | cut -d$" " -f10 | tail -n +8 | head -n -1 | paste -sd+ | bc`/ `nproc` | python } 忽略(几乎)此函数的任何其他问题,问题在于正在构造并传递给Python的print语句需要转换为对函数的调用 function cpuusg(

您好,有人能解释一下从python2.7到3移植这个函数吗,因为我不能这么做

function cpuusg(){
    echo print `top -n 1 | tr -s " " | cut -d$" " -f10 | tail -n +8 | head -n -1 | paste -sd+ | bc`/ `nproc` | python
}
忽略(几乎)此函数的任何其他问题,问题在于正在构造并传递给Python的
print
语句需要转换为对函数的调用

function cpuusg() {
    numerator=$(top -n 1 | tr -s " " | cut -d " " -f10 | tail -n +8 | head -n -1 | paste -sd+ | bc)
    denominator=$(nproc)
    echo "print($numerator / $denominator)" | python
}

你有没有试过用管道连接到python3而不是python?python3的
print
需要括号。此外,在Python 2中,
/
除法运算符进行整数除法;在Python3中,它进行实数除法。为什么要将它输送到
Python
,您可以在
bash
中执行简单的算术表达式。当您使用
| python3
时,您会遇到什么错误?@KeithThompson-true,但工具链中的
bc
会发生什么错误。您到底想计算什么?从
top
中添加特定列可能不是这样做的,因为在该列中,您获得的行数取决于终端窗口的大小,并且几乎肯定不会反映所有活动进程。