Linear codes may have a few weights if their defining sets are chosen properly. Let s and t be positive integers. For an odd prime p and an even integer m, let q = p m , m = 2s and Tr m (resp. Tr s ) be the absolute trace function from F q (resp. F ps ) to F p . In this paper, we define D b = {(x 1 , ... , x t ) ∈ F q t \{(0, ... , 0)} : Tr m (x 1 + · · · + x t ) = b}, where b ∈ F p . By employing exponential sums, we demonstrate the complete weight enumerators of a class of p-ary linear codes given by C Db = {c(a 1 , ... , a t ): a 1 , ... , a t ∈ F ps }, where c(a 1 , ... , a t ) = (Tr s (a 1 x 1 ps+1 · · · + a t x t p s+1 ))(x 1 ,..., x t ) ∈D b . Then we get their weight enumerators explicitly, which will give us several linear codes with a few weights. The presented codes are suitable with applications in secret sharing schemes.