我正在编写一个shell脚本来动态创建一个cordova项目。它被称为build_android_app.sh
,它只是:
function create_project(){
cordova create testproject com.test testproject
}
echo "2/ Create Project"
create_project
在命令提示符下,当我运行时:
cordova create testproject com.test testproject
一切正常,项目已创建。那么我尝试通过执行:
来运行脚本bash build_android_app.sh
但我收到错误:
/c/Users/teamcity/AppData/Roaming/npm/cordova: /bin/sh: bad interpreter: No such file or directory
我以“teamcity”用户身份登录,而cordova位于/c/Users/teamcity/AppData/Roaming/npm/cordova
的路径
cordova文件的顶部以:
开头#!/bin/sh
我花了很多时间试图让它工作,包括用绝对的cordova路径替换脚本中的cordova。但我仍然得到同样的错误。有什么想法吗?
编辑:
在/c/Users/teamcity/AppData/Roaming/npm/
我跑了:
cat -vet cordova
第一行打印为:
#!/bin/sh$
所以最后还有一个额外的$
标志。通过bash脚本运行此cordova文件的解决方案是什么?
EDIT
实际上,在我的本地Windows机器上,羊脚本工作正常。即使我在运行#!/bin/sh$
时也看到了cat -vet cordova
。
问题出在我正在远程登录的Windows服务器上......
答案 0 :(得分:0)
错误消息说:
/ bin / sh:错误的解释器:没有这样的文件或目录
/bin/sh
是否存在?
脚本:
#!/bin/foo-bar
echo hello
运行:
# ./foo
-bash: ./foo: /bin/foo-bar: bad interpreter: No such file or directory
答案 1 :(得分:0)
正如其他人所说,'听起来像'嵌入式控制代码 - 没有'未经编辑的'要审查的完整版脚本(即复制/粘贴到网络上很可能会删除有问题的代码,如果存在的话......)这有点难以解决。要尝试的事情:
1)bash -n cordova#任何错误?
2)zsh | ksh -n cordova#尝试另一个shell - 有任何错误吗?
3)od -c cordova |更多#查找' \ n \ r'或者其他逃脱的'连击; '正常线条'应以' \ n'结尾
4)' cordova'调用任何其他外部脚本?在那些尝试相同的东西..
5)如Igor所述,确认' / bin / sh'存在,即
ls -l /bin/sh ## is it there?
6)疯狂的远射(也许你的终端没有显示'一切' ...)
cat cordova | tr -d '\r' > cordova.test
./cordova.test
7)替换' / bin / sh'用' / bin / bash&#39 ;? ##可能不是一个好主意,因为可能有' sh'和' bash'脚本中项目的差异......
8)注意She-bang行(#!/ bin / sh |#/ bin / bash |#!/ bin / some_other_tool)必须是脚本的第一行(第1行),如第一行所示
:)
戴尔