Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python运行bash脚本时出现“错误:未知的速记标志:'f'在-f5中”_Python_Linux_Bash_Shell_Kubernetes Helm - Fatal编程技术网

从Python运行bash脚本时出现“错误:未知的速记标志:'f'在-f5中”

从Python运行bash脚本时出现“错误:未知的速记标志:'f'在-f5中”,python,linux,bash,shell,kubernetes-helm,Python,Linux,Bash,Shell,Kubernetes Helm,我在运行一个简单的python脚本时遇到了一个问题,该脚本从.sh脚本读取helm命令并将其输出 当我直接在终端中运行命令时,它运行良好: 舵手列表|格雷普产品-|切割-f5 输出:prod-L2.0.3.258 但是,当我运行python test.py(请参见下面的test.py的全部源代码)时,我得到一个错误,好像我运行的命令是helm list-f5而不是helm list | grep prod-| cut-f5: user@node1:$python test.py 输出: 正在打开

我在运行一个简单的python脚本时遇到了一个问题,该脚本从.sh脚本读取helm命令并将其输出

当我直接在终端中运行命令时,它运行良好:

舵手列表|格雷普产品-|切割-f5 输出:prod-L2.0.3.258 但是,当我运行python test.py(请参见下面的test.py的全部源代码)时,我得到一个错误,好像我运行的命令是helm list-f5而不是helm list | grep prod-| cut-f5:

user@node1:$python test.py 输出: 正在打开文件“helm\u chart\u version.sh”进行读取。。。 正在运行命令“头盔列表| grep prod-| cut-f5”。。。 错误:未知速记标记-f5中的“f” test.py脚本:

导入子流程 打开文件进行读取 file=helm\u chart\u version.sh 打印打开文件“+文件+”以读取。。。 bash命令= 打开文件为fh时: 下一个 bashCommand=nextfh 正在运行的打印命令“+bashCommand+”。。。 process=subprocess.PopenbashCommand.split,stdout=subprocess.PIPE 输出,错误=process.communicate 如果错误为无: 打印输出 其他: 打印错误 helm_chart_version.sh的内容:

cat helm_chart_version.sh 输出: !/bin/bash 舵手列表|格雷普产品-|切割-f5
尽量避免从高级语言运行复杂的shell管道。给定显示的命令,可以将helmlist作为子进程运行,然后用Python对其进行后处理

进程=子进程。运行[helm,list],捕获输出=真,文本=真,检查=真 对于process.stdout.splitlines中的行: 如果“prod-”不一致: 持续 words=line.split 印刷字[4]
您显示的实际Python脚本在语义上似乎与直接运行shell脚本没有什么不同。您可以使用sh-x选项或shell set-x命令使其在执行时打印出每一行。

不要拆分命令,并在Popen命令中使用shell=True:process=subprocess.PopenbashCommand,shell=True,stdout=subprocess.PIPE。说明:管道是shell功能,因此如果不通过shell处理命令,那些竖条只是舵手命令中看起来很奇怪的参数。