2012-12-20 48 views
3

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

但是,当我尝试使用此脚本为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: [email protected]:/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: [email protected]:/tmp/.csv: No such file or directory 
[Finished in 0.0s with exit code 127] 

看来,尽管是一个命令行脚本,sh文件被解释为别的东西。我如何解决它?

回答

3

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

我打算使用一个我已成功使用的详细示例。

  1. 请确保您的自定义脚本被标记为可执行文件并已获得shebang。一个简单的脚本,其中包括在你的榜样失败基名的命令(我把它叫做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作为例子。其他选项在documentation

    { 
        "cmd" : ["test_basename.sh", "$file"] 
    } 
    
  6. 在打开文本崇高一个文件并运行产生的构建系统。

+1

当我创建符号链接时,我通常会删除文件扩展名:) – aanton

+0

我从来没有对_bash_脚本使用'sh'扩展名......它被延迟和误导! –

+0

@gniourf_gniourf,我很抱歉,如果这是一个新手问题,但如何添加'。sh'扩展误导?非常感谢! – Swivel

0

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

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

参考:sublimeText docs

0

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

  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 Build System中引用的文件夹相同

  5. 在崇高打开一个文件夹(注意:在Windows上,建立在崇高的命令行打开系统似乎打破)

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

  7. build.sh,发疯:

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

我已经开始使用这种结合Pandoc从Markdown文件生成HTML文件。

0

看起来好像你在Mac上。在我意识到System 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" 

}

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

相关问题