GithubHelp home page GithubHelp logo

Comments (6)

koalaman avatar koalaman commented on July 3, 2024

Is this just to write the value? Use echo for that.

from shellcheck.

apennebaker avatar apennebaker commented on July 3, 2024

I want to write a shell function that returns a string, without printing it (very functional programming style). But it's not easy, as shell functions normally only return exit codes.

For FizzBuzz, I gave up, and had the fizz function go ahead and print the value instead of returning it. My Lisp senses are tingling, but whatcha gonna do...

from shellcheck.

koalaman avatar koalaman commented on July 3, 2024

Writing to stdout is how you return data from functions. The caller decides what happens to it, whether it's captured or merged with the caller's stdout. It's perfectly functional.

from shellcheck.

apennebaker avatar apennebaker commented on July 3, 2024

Interesting. I suppose there are ways to redirect the output before/when the function is executed, so that the user doesn't see the string in the real STDOUT?

from shellcheck.

koalaman avatar koalaman commented on July 3, 2024

Yes. you can capture/expand the data with variable=$(somefunction), pipe it with somefunction | otherfunction, redirect it with somefunction > somefile, and there are process substitutions and coprocs, and they can all be combined and nested arbitrarily.

In lisp/scheme, (+ 2 3) will print 5 to the screen if you run it from a repl, but not if you use it as a sub-expression unless the function implicitly or explicitly returns it unmodified. That's the same thing.

There's no "real stdout" in bash, just like there's no "real return value" in lisp. There's just your own return value/stdout, and what the caller did with it.

from shellcheck.

apennebaker avatar apennebaker commented on July 3, 2024

Pipe |! Genius!

from shellcheck.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.