

 AWS Cloud9 不再提供給新客戶。 AWS Cloud9 的現有客戶可以繼續正常使用該服務。[進一步了解](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 定義建置器或執行器
<a name="build-run-debug-define-builder-runner"></a>

本主題說明如何定義建置器或執行器。定義建置器或執行器之前，請確定您[已建立建置器或執行器](build-run-debug.md#build-run-debug-create-builder-runner)。



在顯示的建置器或執行器標籤上，使用 JSON 來定義執行器或建置器。開始使用下列程式碼做為範本。

針對建置器，請使用此程式碼。

```
{
  "cmd": [],
  "info": "",
  "env": {},
  "selector": ""
}
```

針對執行器，請使用此程式碼。

```
{
  "cmd": [],
  "script": "",
  "working_dir": "",
  "info": "",
  "env": {},
  "selector": "",
  "debugger": "",
  "debugport": ""
}
```

在上述程式碼中：
+  `cmd`：代表以逗號分隔的字串清單 AWS Cloud9 ，供 做為單一命令執行。

   AWS Cloud9 執行此命令時，清單中的每個字串都會以單一空格分隔。例如， AWS Cloud9 會以 `"cmd": [ "ls", "$file", "$args"]`執行`ls $file $args`，其中 AWS Cloud9 會以目前檔案的完整路徑`$file`取代 ，並以檔案名稱後面輸入`$args`的任何引數取代 。如需詳細資訊，請參閱本節後文所述之支援的變數清單。
+  `script`：代表終端機中執行器執行的 bash 指令碼 (如需可讀性，也可以指定為行陣列)。
+  `working_dir`：代表執行器將在其中執行的目錄。
+  `info`：代表您希望在執行開始時向使用者顯示的任何文字字串。此字串可包含變數，例如 `Running $project_path$file_name...`，其中 AWS Cloud9 將`$project_path`取代為目前檔案的目錄路徑，並將 取代`$file_name`為目前檔案的名稱部分。請參閱本節後文所述之支援的變數清單。
+  `env`：代表 AWS Cloud9 要使用的任何命令列引數陣列，例如：

  ```
  "env": {
    "LANG": "en_US.UTF-8",
    "SHLVL": "1"
  }
  ```
+  `selector`：代表 AWS Cloud9 您想要用來識別套用至此執行器之檔案名稱的任何規則表達式。例如，您可以指定 `source.py` 用於 Python 檔案。
+  `debugger`：表示您想要 AWS Cloud9 使用且與此執行器相容的任何可用除錯器的名稱。例如，您可以指定 `v8` 用於 V8 除錯器。
+  `debugport`：表示 AWS Cloud9 您想要在偵錯期間使用的連接埠號碼。例如，您可以指定 `15454` 用於連接埠號碼。

下列資料表顯示您可以使用的變數。


****  

|  **變數**  |  **Description**  | 
| --- | --- | 
|   `$file_path`   |  目前檔案的目錄，例如 `/home/ec2-user/environment` 或 `/home/ubuntu/environment`。  | 
|   `$file`   |  目前檔案的完整路徑，例如 `/home/ec2-user/environment/hello.py` 或 `/home/ubuntu/environment/hello.py`。  | 
|   `$args`   |  在檔案名稱後輸入的任何引數，例如 `"5" "9"`。  | 
|   `$file_name`   |  目前檔案的名稱部分，例如 `hello.py`。  | 
|   `$file_extension`   |  目前檔案的副檔名，例如 `py`。  | 
|   `$file_base_name`   |  不含檔案副檔名的目前檔案名稱，例如 `hello`。  | 
|   `$packages`   |  套件資料夾的完整路徑。  | 
|   `$project`   |  目前專案資料夾的完整路徑。  | 
|   `$project_path`   |  目前專案檔案的目錄，例如 `/home/ec2-user/environment/` 或 `/home/ubuntu/environment/`。  | 
|   `$project_name`   |  不含檔案副檔名的目前專案檔案名稱，例如 `my-demo-environment`。  | 
|   `$project_extension`   |  目前專案檔案的副檔名。  | 
|   `$project_base_name`   |  不含副檔名的目前專案檔案名稱。  | 
|   `$hostname`   |  環境的主機名稱，例如 `192.0.2.0`。  | 
|   `$hostname_path`   |  含專案檔案相關路徑的環境主機名稱，例如 `https://192.0.2.0/hello.js`。  | 
|   `$url`   |  存取環境的完整 URL，例如 `https://192.0.2.0.`。  | 
|   `$port`   |  指派給環境的連接埠，例如 `8080`。  | 
|   `$ip`   |  對環境執行程序的 IP 地址，例如 `0.0.0.0`。  | 

舉例來說，下列名為 `G++.build` 的建置器檔案會針對使用 `-o` 選項執行 **`g++`** 命令的 GCC 來定義建置器，以將目前檔案 (例如 `hello.cpp`) 編譯至物件模組。然後會將物件模組以與目前檔案相同的名稱 (例如 `hello`) 連結至程式。在此處，相同的命令為 `g++ -o hello hello.cpp`。

```
{
  "cmd": [ "g++", "-o", "$file_base_name", "$file_name" ],
  "info": "Compiling $file_name and linking to $file_base_name...",
  "selector": "source.cpp"
}
```

再舉另一個例子，下列名為 `Python.run` 的執行器檔案會定義一個執行器，該執行器會使用所提供的任何引數來使用 Python 執行目前檔案。例如，如果目前檔案名為 `hello.py`，且己提供 `5` 和 `9` 引數，則相同的命令為 `python hello.py 5 9`。

```
{
  "cmd": [ "python", "$file_name", "$args" ],
  "info": "Running $file_name...",
  "selector": "source.py"
}
```

最後，下列名為 `Print Run Variables.run` 的執行器檔案會定義一個執行器，該執行器在輸出每個可用變數的值之後即停止。

```
{
  "info": "file_path = $file_path, file = $file, args = $args, file_name = $file_name, file_extension = $file_extension, file_base_name = $file_base_name, packages = $packages, project = $project, project_path = $project_path, project_name = $project_name, project_extension = $project_extension, project_base_name = $project_base_name, hostname = $hostname, hostname_path = $hostname_path, url = $url, port = $port, ip = $ip"
}
```