【发布时间】:2020-07-08 11:15:30
【问题描述】:
我们想通过python脚本运行以下shell命令(我们使用python 2.7版)
echo hadoop-hdfs-namenode - 2.6.4.0-91| grep hadoop-hdfs-namenode | awk '{print $NF}' | awk '{printf "%.1f\n", $NF}'
2.6
所以我创建了以下 python 脚本来获取结果 - 2.6
import os
os.system("echo hadoop-hdfs-namenode - 2.6.4.0-91| grep hadoop-hdfs-namenode | awk '{print $NF}' | awk '{printf "%.1f\n", $NF}' ")
但是当我运行它时,我们得到了
os.system("echo hadoop-hdfs-namenode - 2.6.4.0-91| grep hadoop-hdfs-namenode | awk '{print $NF}' | awk '{printf "%.1f\n", $NF}' ")
^
SyntaxError: invalid syntax
是否可以通过 python 运行这个复杂的 shell? , 为了得到预期的结果 - 2.6
以及如何修正我的语法?
【问题讨论】:
-
您也可以使用较新的
subprocessmodule 来替换os.system调用。 -
除了@mabergerx 所说的,检查每个步骤的返回码总是一个好主意,这样您就知道何时发生错误
-
将
{printf "%.1f\n", $NF}更改为{printf '%.1f\n', $NF} -
我根据您的建议在更新后得到这个 - awk: cmd.行:1:{printf %.1f awk:cmd。 line:1: ^ 语法错误 awk: cmd.行:1:{printf %.1f awk:cmd。 line:1: ^ 意外换行符或字符串结尾 sh: line 1: , $NF}: command not found
标签: python linux python-2.7