3

我在 Sublime 2 中使用 SQL 查询。我有一个自定义脚本,它以 sql 文件名作为参数,将其上传到服务器,下载查询结果并将其转换为有效的 csv 文件。它有效,而且非常有用。

但是,当我尝试使用此脚本为 Sublime Text 2 设置构建系统时,出现错误。这是我的崇高构建文件:

{
    "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 文件被解释为其他东西。我如何解决它?

4

4 回答 4

3

我认为如果将您的自定义脚本添加到系统路径(添加到 BIN 目录),问题就可以解决。

我将使用我已成功使用的详细示例。

  1. 确保您的自定义脚本被标记为可执行文件并获得了 shebang。一个简单的脚本,其中包含在您的示例中失败的 basename 命令(我称之为 test_basename.sh):

    #!/bin/bash
    echo $1
    basename $1
    
  2. 创建一个符号链接以将脚本包含在 BIN 目录中,以便它可以在任何文件夹中执行。在我的 Ubuntu 中,我使用以下命令执行此操作:

    sudo ln -s /Users/username/sql/test_basename.sh /usr/bin/test_basename.sh
    
  3. 检查控制台中任意目录下的脚本

    cd /tmp
    test_basename.sh some-filename
    
  4. 重新启动崇高文本

  5. 创建一个使用简单脚本的构建系统。我以 $file 为例。其他选项在文档中。

    {
        "cmd" : ["test_basename.sh", "$file"]
    }
    
  6. 在 Sublime Text 中打开一个文件并运行创建的构建系统。

于 2012-12-27T11:57:26.907 回答
0

如果您不想创建符号链接,请使用变量$project_path$file_path

{
    "shell_cmd": "./do.sh",
    "shell": true,
    "working_dir": "$project_path"
}

变量参考:sublimeText docs

于 2015-06-18T08:22:08.557 回答
0

我能够为 Sublime Text 2 创建一个通用的 Bash 构建系统:

  1. 创建一个新的构建系统
  2. 使用以下代码:

    {
        "cmd": ["/path/to/bash-build.sh", "$folder"],
        "shell": true,
        "working_dir": "$folder",
        "windows": {
            "cmd": ["C:\\path\\to\\bash-build.sh", "$folder"]
        }
    }
    
  3. 另存为bash.sublime-build

  4. 使用您选择的编辑器创建一个新的 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 $?
    

    将其保存bash-build.sh在您在 Sublime 构建系统中引用的同一文件夹中

  5. 在 Sublime 中打开一个文件夹(注意:在 Windows 上,从命令行打开 Sublime 时构建系统似乎损坏)

  6. 创建一个新的文本文件并将其保存build.sh到在 Subilme 打开的根文件夹中

  7. build.sh中,发疯:

    #!/bin/env bash
    
    # do some crazy, custom build
    
    exit $?
    

我已经开始将它与Pandoc结合使用来从 Markdown 文件生成 HTML 文件。

于 2015-08-18T20:21:11.337 回答
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您使用的变量实际上应该是 a working_dir):

{
"cmd" : ["exec_sql.sh", "$filename"],
"selector" : "source.sql",
"working_dir" : "/Users/username/sql",
"path": "PASTE $PATH VALUE HERE"

}

它现在应该可以工作了。至少它帮助了我。

于 2017-08-22T18:06:56.653 回答