首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python调用bash脚本时出现的“语法错误:未终止的引号字符串”错误

从Python调用bash脚本时出现的“语法错误:未终止的引号字符串”错误
EN

Stack Overflow用户
提问于 2016-04-11 07:42:21
回答 1查看 5.1K关注 0票数 1

在这种情况下,我需要在python脚本中调用bash脚本,然后在另一个python脚本中调用bash脚本。

下载-输出-files.py:

代码语言:javascript
复制
#!/usr/bin/env python
import os
import sys

for i in node_path:
    cmd="python watcher.py "+i
    os.system(cmd) ##calling another python script

watcher.py:

代码语言:javascript
复制
#!/usr/bin/env python
import os
import time

        if 'finish' in child:
            print "finish found"
        cmd="./copy_output_file.sh "+node   
        os.system(cmd) ##Calling shell script here

copy_output_file.sh:

代码语言:javascript
复制
#!/bin/bash

filepath=$1
cp ff /home/likewise-open/TALENTICA-ALL/mayankp/kazoo/$filepath

当我运行download-output-files.py时,它调用watcher.py,然后调用copy_output_file.sh,下面是我面临的错误:

代码语言:javascript
复制
mayankp@mayankp:~/kazoo$ python download-output-files.py 

finish found
sh: 1: Syntax error: Unterminated quoted string

当我在Python中运行相同的命令时,它成功地运行bash脚本。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-11 08:56:58

将字符串连接到shell命令通常是不明智的。尝试在您的print(cmd)调用之前插入os.system(cmd),找出您想要运行的确切命令,我想您会注意到问题所在(很可能是文件名中有撇号)。

尝试使用subprocess.call(['python', 'watcher.py', i])代替os.system("python watcher.py "+i),使用subprocess.call(['/copy_output_file.sh', node])代替os.system(cmd="./copy_output_file.sh "+node)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36542654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档