# Suppress printing methods in a piped script

**URL:** https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698
**Category:** General Usage
**Tags:** question, scripting
**Created:** [July 14, 2025, 12:26pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698 "2025-07-14T12:26:00Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [July 14, 2025, 12:26pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/1 "2025-07-14T12:26:00Z")

</div>

I am writing a short script in Julia, which is piped in from an encompassing Bash script. I want to suppress printing of “`f (generic function with 1 method)`” outputs, as in

```bash
$ cat <<EOF | julia
> foo() = 1
> EOF
foo (generic function with 1 method)

```

but I want to keep `stdout` and `stderr` as is.

---

<div class="post-metadata">

### Author: ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)
#### Post date: [July 14, 2025, 12:46pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/2 "2025-07-14T12:46:04Z")

</div>

Can you terminate each line with `;`? I assume this ends up launching the REPL, and passing your input as an actual file instead of through stdin is not an option due to your execution environment.

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [July 14, 2025, 12:59pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/3 "2025-07-14T12:59:15Z")

</div>

> [@Sukera](#):
>
> Can you terminate each line with `;`?

That was the first thing I tried, but it does not help (should have said).

```bash
bash-5.2$ cat <<EOF | julia
> foo() = 1;
> EOF
foo (generic function with 1 method)

```

> [@Sukera](#):
>
> assing your input as an actual file instead of through stdin is not an option due to your execution environment.

If necessary I can export to a temporary file but the environment may not support that, so I would prefer not to if there is another solution.

Is there a command line switch for non-interactive mode? The opposite of `-i`.

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [July 14, 2025, 1:03pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/4 "2025-07-14T13:03:42Z")

</div>

A workaround is putting the entire script in a `let` block, as in

```julia
cat <<EOF | julia
> let
> foo(x) = x + 1
> println(foo(3))
> nothing
> end
> EOF
4

```

---

<div class="post-metadata">

### Author: ![\_bernhard](https://avatars.discourse-cdn.com/v4/letter/_/bc79bd/32.png) [@\_bernhard](https://discourse.julialang.org/u/_bernhard)
#### Post date: [July 14, 2025, 1:06pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/5 "2025-07-14T13:06:14Z")

</div>

The `let` block isn’t even necessary, just ending the code with `nothing` does the trick.

Edit: in fact even that isn’t necessary since `println` returns `nothing` already.

Edit2: the `nothing` (or `println`) needs to be on the same line as the definition, separated by semicolon.

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [July 14, 2025, 1:11pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/6 "2025-07-14T13:11:36Z")

</div>

> [@\_bernhard](#):
>
> The `let` block isn’t even necessary, just ending the code with `nothing` does the trick.

I don’t think that is correct, as the REPL prints line by line. Eg

```julia
bash-5.2$ cat <<EOF | julia
> foo() = 1
> nothing
> EOF
foo (generic function with 1 method)

```

---

<div class="post-metadata">

### Author: ![\_bernhard](https://avatars.discourse-cdn.com/v4/letter/_/bc79bd/32.png) [@\_bernhard](https://discourse.julialang.org/u/_bernhard)
#### Post date: [July 14, 2025, 1:15pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/7 "2025-07-14T13:15:52Z")

</div>

See my second edit above

```julia
bash-3.2$ cat <<EOF | julia
> foo(x)=x+1
> println(foo(1))
> EOF
foo (generic function with 1 method)
2

```

vs

```julia
bash-3.2$ cat <<EOF | julia
> foo(x)=x+1; nothing
> EOF
bash-3.2$ cat <<EOF | julia
> foo(x)=x+1; println(foo(1))
> EOF
2

```

---

<div class="post-metadata">

### Author: ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)
#### Post date: [July 14, 2025, 2:36pm UTC](https://discourse.julialang.org/t/suppress-printing-methods-in-a-piped-script/130698/8 "2025-07-14T14:36:53Z")

</div>

Just use `julia -` to treat `stdin` as a script rather than as interactive inputs. e.g. with your [heredoc](https://en.wikipedia.org/wiki/Here_document) example:

```julia
% cat <<EOF | julia -
foo() = 1
EOF

```

gives no output. (This is a standard Unix idiom.)
