2012-12-20 65 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" 

}

它現在應該可以工作。至少它幫助了我。

相關問題