Echo output to terminal within function in BASH

后端 未结 4 1285
情深已故
情深已故 2020-12-31 04:38

I am writing a script in BASH. I have a function within the script that I want to provide progress feedback to the user. Only problem is that the echo command does not print

相关标签:
4条回答
  • 2020-12-31 05:09

    Yet a solution other than sending to STDERR (it may be preferred if your STDERR has other uses, or possibly be redirected by the caller)

    This solution direct prints to the terminal tty:

    function test_function {
        echo "Echo value to terminal" > /dev/tty
        echo "return value"
    }
    
    0 讨论(0)
  • 2020-12-31 05:20

    send terminal output to stderr:

    function test_function {
        echo "Echo value to terminal" >&2
        echo "return value"
    }
    
    0 讨论(0)
  • 2020-12-31 05:33

    Dont use command substitution to obtain the return value from the function

    The return value is always available at the $? variable. You can use the variable rather than using command substitution

    Test

    $ function test_function {
    > return_val=10; 
    > echo "Echo value  to terminal $return_val";
    > return $return_val; 
    > }
    
    $ test_function
    Echo value  to terminal 10
    
    $ return_value=$?
    
    $ echo $return_value
    10
    
    0 讨论(0)
  • 2020-12-31 05:33

    If you don't know in which terminal/device you are:

    function print_to_terminal(){
        echo "Value" >$(tty)
    }
    
    0 讨论(0)
提交回复
热议问题