# InsertShellScriptBuildPhase

> Creates a new shell script build phase for a given target.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.iOS.Xcode](/engine/6000.5/script-reference/unityeditor/ios/xcode.md)
* **Assembly:** UnityEditor.iOS.Extensions.Xcode

## InsertShellScriptBuildPhase(int, string, string, string, string)

Creates a new shell script build phase for a given target.

```csharp
public string InsertShellScriptBuildPhase(int index, string targetGuid, string name, string shellPath, string shellScript)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The position at which to insert the new build phase. If it's higher than the total number of build phases, the new phase is added at the end.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The GUID of the target, such as the one returned by [PBXProject.TargetGuidByName](/engine/6000.5/script-reference/unityeditor/ios/xcode/pbxproject/targetguidbyname.md).**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the phase.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The shell path.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The shell script.

### Returns

| Type                                                           | Description                        |
| -------------------------------------------------------------- | ---------------------------------- |
| [string](https://learn.microsoft.com/dotnet/api/system.string) | Returns the GUID of the new phase. |

### Remarks

The build phase is inserted at the specified position. You can query all the defined build phases using [PBXProject.GetAllBuildPhasesForTarget](/engine/6000.5/script-reference/unityeditor/ios/xcode/pbxproject/getallbuildphasesfortarget.md).

### Examples

```csharp
using UnityEditor;
using System.IO;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;

public class Sample_InsertShellScriptBuildPhase  
{
    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget buildTarget, string pathToBuiltProject)
    {

        // Stop processing if build target is not iOS
        if (buildTarget != BuildTarget.iOS)
            return;

        // Initialize PBXProject
        string projectPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
        PBXProject pbxProject = new PBXProject();
        pbxProject.ReadFromFile(projectPath);

        // Get GUID of the target you want to add the Shell Script Phase to
        string mainTargetGuid = pbxProject.GetUnityMainTargetGuid();

        // Add the Shell Script Phase to that target as first custom Shell Script phase (index 0)
        pbxProject.InsertShellScriptBuildPhase(0, mainTargetGuid, "exampleScript1", "", "echo exampleCommand1");

        // Apply changes to the pbxproj file
        pbxProject.WriteToFile(projectPath);
    }
}
```

## InsertShellScriptBuildPhase(int, string, string, string, string, List\<string>)

Creates a new shell script build phase for a given target.

```csharp
public string InsertShellScriptBuildPhase(int index, string targetGuid, string name, string shellPath, string shellScript, List<string> inputPaths)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The position at which to insert the new build phase. If it's higher than the total number of build phases, the new phase is added at the end.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The GUID of the target, such as the one returned by [PBXProject.TargetGuidByName](/engine/6000.5/script-reference/unityeditor/ios/xcode/pbxproject/targetguidbyname.md).**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the phase.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The shell path.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The shell script.**** (\[List\<string>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): The shell script input dependencies.

### Returns

| Type                                                           | Description                        |
| -------------------------------------------------------------- | ---------------------------------- |
| [string](https://learn.microsoft.com/dotnet/api/system.string) | Returns the GUID of the new phase. |

### Remarks

The build phase is inserted at the specified position. You can query all the defined build phases using [PBXProject.GetAllBuildPhasesForTarget](/engine/6000.5/script-reference/unityeditor/ios/xcode/pbxproject/getallbuildphasesfortarget.md).
