【发布时间】:2015-04-11 19:48:00
【问题描述】:
我正在为 Travis CI 制作一个 Python 脚本。
.travis.yml
...
script:
- support/travis-build.py
...
python 文件travis-build.py 是这样的:
#!/usr/bin/env python
from subprocess import check_call
...
check_call(r"mv !(my_project|cmake-3.0.2-Darwin64-universal) ./my_project/final_folder", shell=True)
...
当 Travis 构建达到那条线时,我收到一个错误:
/bin/sh: 1: Syntax error: "(" unexpected
我只是尝试了很多不同的形式来编写它,但我得到了相同的结果。有什么想法吗?
提前致谢!
编辑
我当前的目录布局:
- my_project/final_folder/
- cmake-3.0.2-Darwin64-universal/
- fileA
- fileB
- fileC
我正在尝试使用此命令将所有当前文件 fileA、fileB 和 fileC,不包括 my_project 和 cmake-3.0.2-Darwin64-universal 文件夹移动到 ./my_project/final_folder。如果我在 Linux shell 上执行这个命令,我会得到我的目标,但不是通过 check_call() 命令。
注意:我不能一个一个移动文件,因为还有很多其他的
我不知道 Travis 默认使用哪个 shell,因为我没有指定它,我只知道如果我在我的 .travis.yml 中编写命令:
.travis.yml
...
script:
# Here is the previous Travis code
- mv !(my_project|cmake-3.0.2-Darwin64-universal) ./my_project/final_folder
...
它有效。但是如果我使用脚本,它会失败。
我从以下问题中找到了这个命令:
How to use 'mv' command to move files except those in a specific directory?
【问题讨论】:
-
您是否尝试进行进程替换?如果是这样,语法将是
$(my_project|cmake-3.0.2-Darwin64-universal) -
您希望您的语法在哪些类型的 shell 中工作?
-
@Tom 我没试过,我改一下再证明
-
@Jan-PhilipGehrcke 我希望它能在
shshell 上工作 -
你需要明确你想要做什么,因为目前,我们只是在猜测。
my_project是命令吗?您是否希望将其通过管道传输到命令cmake-3.0.2-Darwin64-universal的输出用作mv的第一个参数?如果没有,尝试我的建议毫无意义!
标签: python bash shell sh travis-ci