清除回声历史
Clearing the echo history
我有一个 bash 脚本调用一个 return 值的函数。我包含了以下脚本:
脚本
source ./utilities/function1.sh
result=$(Function1)
echo "Result: $result"
函数 1
function Function1 {
echo "Inside Function: Function1"
cat <<EOF
this is the result
EOF
}
我希望能够在函数内回显到控制台,并且 return 只回显我想要的值,不包括回显到控制台的消息,但是当我 运行脚本如下 returned:
Result: Inside Function: Func1
this is the result
这是从 bash 函数中 return 一个值的最佳方法吗?或者有什么方法可以回显到控制台并 return 一个没有内容的值从函数回显命令?
提前致谢
有几种方法可以满足您的需求。两个简单的是:
使用 STDERR 回显到控制台并在脚本中捕获 STDOUT。默认情况下,STDOUT 在文件描述符 1 上,STDERR 在文件描述符 2 上:
function myFunction() {
echo "This goes to STDOUT" >&1 # '>&1' is the default, so can be left out.
echo "This goes to STDERR" >&2
}
result=$(myFunction)
echo ${result}
使用一个变量来return一个字符串给调用者:
function myFunction() {
echo "This goes to STDOUT"
result="This goes into the variable"
}
declare result="" # Has global scope. Can be modified from anywhere.
myFunction
echo ${result}
全局范围变量不是好的编程习惯,但却是 bash 脚本编写中必不可少的罪恶。
我有一个 bash 脚本调用一个 return 值的函数。我包含了以下脚本:
脚本
source ./utilities/function1.sh
result=$(Function1)
echo "Result: $result"
函数 1
function Function1 {
echo "Inside Function: Function1"
cat <<EOF
this is the result
EOF
}
我希望能够在函数内回显到控制台,并且 return 只回显我想要的值,不包括回显到控制台的消息,但是当我 运行脚本如下 returned:
Result: Inside Function: Func1
this is the result
这是从 bash 函数中 return 一个值的最佳方法吗?或者有什么方法可以回显到控制台并 return 一个没有内容的值从函数回显命令?
提前致谢
有几种方法可以满足您的需求。两个简单的是:
使用 STDERR 回显到控制台并在脚本中捕获 STDOUT。默认情况下,STDOUT 在文件描述符 1 上,STDERR 在文件描述符 2 上:
function myFunction() {
echo "This goes to STDOUT" >&1 # '>&1' is the default, so can be left out.
echo "This goes to STDERR" >&2
}
result=$(myFunction)
echo ${result}
使用一个变量来return一个字符串给调用者:
function myFunction() {
echo "This goes to STDOUT"
result="This goes into the variable"
}
declare result="" # Has global scope. Can be modified from anywhere.
myFunction
echo ${result}
全局范围变量不是好的编程习惯,但却是 bash 脚本编写中必不可少的罪恶。