![bash - 返回并打印语句](https://linux22.com/image/1154579/bash%20-%20%E8%BF%94%E5%9B%9E%E5%B9%B6%E6%89%93%E5%8D%B0%E8%AF%AD%E5%8F%A5.png)
我有一个 bash 函数,它通过将数字加 20 来返回该数字。同时,我想显示以查看输入的内容。
function add_nos {
echo "$1"
echo $(($1 + 20))
return 1
}
result=`add_nos $1`
echo $result
当我运行以下命令时 -
bash setup.sh 10
我得到以下输出 -
10 30
我如何区分这两个语句;即,第一个回显用于调试,第二个回显用于返回值。
答案1
也许将调试语句打印到标准错误而不是标准输出?
echo "$1" >&2
答案2
返回
每次命令/函数调用后,该return
值都会存储在 $? 中。尝试以下方法访问它:
function add_nos {
echo "$1"
echo $(($1 + 20))
return 1
}
result=`add_nos $1`
retval=$? # this is the "return" value of "add_nos"
echo "result: $result"
echo "return: $retval"
标准错误
正如另一个答案所建议的那样,标准错误是发送调试输出的好地方。除了返回值之外,您还可以做很多事情。试试这个:
function add_nos {
echo "input: $1" >&2
echo $(($1 + 20))
echo "done now!" >&2
}
echo "starting script" >&2
result=`add_nos $1`
echo "result: $result"
$ bash setup.sh 10
starting script
input: 10
done now!
result: 30
$ bash setup.sh 10 2>/dev/null
result: 30
$ bash setup.sh 10 2>logfile
result: 30
$ cat logfile
starting script
input: 10
done now!