diff --git a/cmd/cue/cmd/common.go b/cmd/cue/cmd/common.go
index 15ea9dd..67ed7a9 100644
--- a/cmd/cue/cmd/common.go
+++ b/cmd/cue/cmd/common.go
@@ -139,6 +139,9 @@
 	expressions []ast.Expr // only evaluate these expressions within results
 	schema      ast.Expr   // selects schema in instance for orphaned values
 
+	// outFile defines the file to output to. Default is CUE stdout.
+	outFile *build.File
+
 	encConfig *encoding.Config
 	merge     []*build.Instance
 }
@@ -364,18 +367,18 @@
 	}
 	cfg.loadCfg.Stdin = cmd.InOrStdin()
 
-	builds := loadFromArgs(cmd, args, cfg.loadCfg)
-	if builds == nil {
-		return nil, errors.Newf(token.NoPos, "invalid args")
-	}
-	decorateInstances(cmd, flagInject.StringArray(cmd), builds)
-
 	p = &buildPlan{cfg: cfg, cmd: cmd, importing: cfg.loadCfg.DataFiles}
 
 	if err := p.parseFlags(); err != nil {
 		return nil, err
 	}
 
+	builds := loadFromArgs(cmd, args, cfg.loadCfg)
+	if builds == nil {
+		return nil, errors.Newf(token.NoPos, "invalid args")
+	}
+	decorateInstances(cmd, flagInject.StringArray(cmd), builds)
+
 	for _, b := range builds {
 		if b.Err != nil {
 			return nil, b.Err
@@ -446,24 +449,25 @@
 	return p, nil
 }
 
-func (b *buildPlan) out(def string) (*build.File, error) {
+func (b *buildPlan) parseFlags() (err error) {
 	out := flagOut.String(b.cmd)
 	outFile := flagOutFile.String(b.cmd)
 
 	if strings.Contains(out, ":") && strings.Contains(outFile, ":") {
-		return nil, errors.Newf(token.NoPos,
+		return errors.Newf(token.NoPos,
 			"cannot specify qualifier in both --out and --outfile")
 	}
 	if outFile == "" {
-		outFile = def
+		outFile = "-"
 	}
 	if out != "" {
 		outFile = out + ":" + outFile
 	}
-	return filetypes.ParseFile(outFile, b.cfg.outMode)
-}
+	b.outFile, err = filetypes.ParseFile(outFile, b.cfg.outMode)
+	if err != nil {
+		return err
+	}
 
-func (b *buildPlan) parseFlags() (err error) {
 	for _, e := range flagExpression.StringArray(b.cmd) {
 		expr, err := parser.ParseExpr("--expression", e)
 		if err != nil {
diff --git a/cmd/cue/cmd/custom.go b/cmd/cue/cmd/custom.go
index b1d5158..9a6976c 100644
--- a/cmd/cue/cmd/custom.go
+++ b/cmd/cue/cmd/custom.go
@@ -281,7 +281,7 @@
 				return true
 			}
 
-			// Prevent inifinite walks
+			// Prevent infinite walks
 			_, vPath := v.Reference()
 			if vPath != nil {
 				vPath := string(keyForReference(vPath...))
diff --git a/cmd/cue/cmd/def.go b/cmd/cue/cmd/def.go
index 11927c2..bb21e4a 100644
--- a/cmd/cue/cmd/def.go
+++ b/cmd/cue/cmd/def.go
@@ -54,10 +54,7 @@
 	b, err := parseArgs(cmd, args, &config{outMode: filetypes.Def})
 	exitOnErr(cmd, err, true)
 
-	f, err := b.out("-")
-	exitOnErr(cmd, err, true)
-
-	e, err := encoding.NewEncoder(f, b.encConfig)
+	e, err := encoding.NewEncoder(b.outFile, b.encConfig)
 	exitOnErr(cmd, err, true)
 
 	iter := b.instances()
diff --git a/cmd/cue/cmd/eval.go b/cmd/cue/cmd/eval.go
index 361bff0..8d94aa8 100644
--- a/cmd/cue/cmd/eval.go
+++ b/cmd/cue/cmd/eval.go
@@ -108,10 +108,7 @@
 	}
 	b.encConfig.Format = opts
 
-	f, err := b.out("-")
-	exitOnErr(cmd, err, true)
-
-	e, err := encoding.NewEncoder(f, b.encConfig)
+	e, err := encoding.NewEncoder(b.outFile, b.encConfig)
 	exitOnErr(cmd, err, true)
 
 	iter := b.instances()
diff --git a/cmd/cue/cmd/export.go b/cmd/cue/cmd/export.go
index b53ab3c..0f7669b 100644
--- a/cmd/cue/cmd/export.go
+++ b/cmd/cue/cmd/export.go
@@ -107,10 +107,7 @@
 	b, err := parseArgs(cmd, args, &config{outMode: filetypes.Export})
 	exitOnErr(cmd, err, true)
 
-	f, err := b.out("-")
-	exitOnErr(cmd, err, true)
-
-	enc, err := encoding.NewEncoder(f, b.encConfig)
+	enc, err := encoding.NewEncoder(b.outFile, b.encConfig)
 	exitOnErr(cmd, err, true)
 	defer enc.Close()
 
diff --git a/cmd/cue/cmd/testdata/script/issue312.txt b/cmd/cue/cmd/testdata/script/issue312.txt
index 3e060a4..f7cfd8b 100644
--- a/cmd/cue/cmd/testdata/script/issue312.txt
+++ b/cmd/cue/cmd/testdata/script/issue312.txt
@@ -1,3 +1,9 @@
+! cue export x.cue -out cue
+cmp stderr expect-stderr
+
+! cue export -out cue
+cmp stderr expect-stderr
+
 ! cue export -out x.cue
 cmp stderr expect-stderr
 
