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. カスタム スクリプトが実行可能としてマークされていて、シバンが含まれていることを確認してください。あなたの例で失敗する 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 に答える