Movement question

Hello! I’m trying to use this guy’s script for movement ( UNITY 3D Advanced Warfare Exo Movements Tutorial Call of Duty FPS Boost Double Jump Suit - YouTube ) however I always get this error:

NullReferenceException: Object reference not set to an instance of an object
move.Update () (at Assets/Scripts/move.cs:30)

using UnityEngine;
using System.Collections;

public class move : MonoBehaviour {
    public float speed = 6;
    public float jumpspeed = 8;
    public float gravity = 20;
    public float boostforce = 20;
    public bool usedboost = false;
    public bool isgrounded = true;

    public float grounddashforce = 8;
    public float airdashforce = 16;
    public float mass = 1;
    public float dashtimer = 0;
    public float dashdelay = 1f;

    private Vector3 impact = Vector3.zero;
    private Vector3 movedirection = Vector3.zero;

    CharacterController controller;

    void Awake()
    {
        CharacterController controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        CollisionFlags flags = controller.Move (movedirection * Time.deltaTime);
        isgrounded = (flags & CollisionFlags.CollidedBelow) != 0;

        if(isgrounded)
        {
            movedirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            movedirection = transform.TransformDirection(movedirection);
            movedirection *= speed;

            if(Input.GetButton ("Jump"))
            {
                movedirection.y = jumpspeed;
            }
            usedboost = false;
        }
        else if(!isgrounded && !usedboost)
        {
            if (Input.GetKeyDown("space"))
            {
                Boost();
            }
        }

        if (Input.GetKeyDown("left shift") && dashtimer <= 0)
        {
            Dash();
        }

        if(impact.magnitude > 0.2F)
        {
            controller.Move(impact * Time.deltaTime);
        }

        impact = Vector3.Lerp(impact, Vector3.zero, 5 * Time.deltaTime);

        movedirection.y -= gravity * Time.deltaTime;

        if (dashtimer > 0)
            dashtimer -= Time.deltaTime;
    }

    void Boost()
    {
        movedirection.y = boostforce;
        usedboost = true; 
    }

    void Dash()
    {
        if(!isgrounded || (isgrounded && (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.D))))
            {
            movedirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            movedirection = transform.TransformDirection(movedirection);
            addimpact(new Vector3(movedirection.x, 0, movedirection.z), (isgrounded ? grounddashforce : airdashforce));
            dashtimer = dashdelay;
        }
    }

    public void addimpact(Vector3 dir, float force)
    {
        dir.Normalize();
        if (dir.y < 0)
            dir.y = -dir.y;
        impact += dir.normalized * force / mass;
    }
}

controller.Move (movedirection * Time.deltaTime);
controller, do you have charactercontroller component in that game object which the script has been assigned to?

FIXED.

CharacterController controller = GetComponent(); should be
controller = GetComponent();

Thank you all for the support.