def evaluate_string(string):
    """
    Evaluates string booleans to boolean values and string ints to int values.

    Returns string param unchanged if it is not equal to 'true' or 'false' and is not valid int.

    :param str string: bool in string form
    :return: bool value if valid bool string param, int value if valid int string param, else string param
    :rtype: bool or int or str
    """
    try:
        return int(string)
    except ValueError:
        pass
    if string == "true":
        return True
    elif string == "false":
        return False
    else:
        return string