我在Sublime 2中使用SQL查询。我有一个自定义脚本,它将sql filename作为参数,将其上传到服务器,下载查询结果并将其转换为有效的csv文件。它有效,而且非常有用。
但是,当我尝试使用此脚本为Sublime Text 2设置构建系统时,我收到错误。这是我的sublime-build文件:
{
"cmd" : ["exec_sql.sh", "$filename"],
"selector" : "source.sql",
"path" : "/Users/username/sql"
}
SQL文件和exec_sql脚本都位于/ Users / username / sql /文件夹中。这是我得到的:
/Users/username/sql/exec_sql.sh: line 9: which: command not found
/Users/username/sql/exec_sql.sh: line 16: basename: command not found
/Users/username/sql/exec_sql.sh: line 19: username@hostname.com:/tmp/: No such file or directory
/Users/username/sql/exec_sql.sh: line 24: ssh: command not found
/Users/username/sql/exec_sql.sh: line 25: username@hostname.com:/tmp/.csv: No such file or directory
[Finished in 0.0s with exit code 127]
似乎尽管是一个命令行脚本,sh文件被解释为其他东西。我该如何解决?
答案 0 :(得分:3)
我认为如果将自定义脚本添加到系统路径(到BIN目录),问题就可以解决了。
我将使用一个我已成功使用的详细示例。
确保您的自定义脚本已标记为可执行文件并已获得shebang。一个简单的脚本,其中包含在您的示例中失败的basename命令(我称之为test_basename.sh):
#!/bin/bash
echo $1
basename $1
创建符号链接以将脚本包含在BIN目录中,以便可以在任何文件夹中执行。在我的Ubuntu中,我使用此命令执行此操作:
sudo ln -s /Users/username/sql/test_basename.sh /usr/bin/test_basename.sh
检查控制台中任何目录中的脚本
cd /tmp
test_basename.sh some-filename
重新启动Sublime Text
创建一个使用简单脚本的构建系统。我用$ file作为例子。其他选项位于documentation。
{
"cmd" : ["test_basename.sh", "$file"]
}
在Sublime Text中打开一个文件并运行已创建的构建系统。
答案 1 :(得分:0)
如果您不想创建符号链接,请使用$project_path
或$file_path
等变量
{
"shell_cmd": "./do.sh",
"shell": true,
"working_dir": "$project_path"
}
变量参考:sublimeText docs
答案 2 :(得分:0)
我能够为Sublime Text 2创建一个通用的Bash构建系统:
使用以下代码:
{
"cmd": ["/path/to/bash-build.sh", "$folder"],
"shell": true,
"working_dir": "$folder",
"windows": {
"cmd": ["C:\\path\\to\\bash-build.sh", "$folder"]
}
}
将其另存为bash.sublime-build
使用您选择的编辑器创建一个新的shell脚本,并将以下代码粘贴到其中:
#!/bin/env bash
echo "Start building..."
if [ -f $1/build.sh ]; then
cd $1
build.sh
cd -
else
echo "File doesn't exist: $1/build.sh"
fi
echo "Done."
exit $?
将其保存为您在Sublime Build System中引用的同一文件夹中的bash-build.sh
在Sublime中打开一个文件夹(注意:在Windows上,当从命令行打开Sublime时,构建系统似乎已损坏)
创建一个新的文本文件并将其另存为build.sh
到Subilme中打开的根文件夹
在build.sh
中,发疯了:
#!/bin/env bash
# do some crazy, custom build
exit $?
我已开始将此项与Pandoc结合使用,以便从Markdown文件生成HTML文件。
答案 3 :(得分:0)
好像你在Mac上。在我意识到系统路径变量错误之前,我遇到了同样的问题。
我按照以下方式修复了它。
首先,通过在终端中粘贴这个来获取当前的PATH(没有第一个$):
$ echo $PATH
复制此路径(它看起来像这样:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/opt/local/bin:/opt/local/sbin
)
现在编辑构建系统以包含此路径(您使用的path
变量实际上应该是working_dir
):
{
"cmd" : ["exec_sql.sh", "$filename"],
"selector" : "source.sql",
"working_dir" : "/Users/username/sql",
"path": "PASTE $PATH VALUE HERE"
}
现在应该可以了。至少它帮助了我。