The*_*age 19 bash shell-script function
在 bash 脚本中,我尽可能将变量保持在函数的本地,然后从函数中传递我需要的内容,例如 bellow
#!/bin/bash
function FUNCTION() {
local LOCAL="value"
echo "$LOCAL" # return this variable
}
GLOBAL=$(FUNCTION)
echo "$GLOBAL"
Run Code Online (Sandbox Code Playgroud)
但是是否可以在包含函数自己的回声的同时执行此操作,以便如果函数有自己的消息要输出,我不必将它们捕获在变量中
#!/bin/bash
function FUNCTION() {
local LOCAL="value"
echo "$LOCAL" # return this variable
echo "This function is done now" # do not return this variable
}
GLOBAL=$(FUNCTION)
echo "$GLOBAL" # should only echo 'value'
Run Code Online (Sandbox Code Playgroud)
l0b*_*0b0 24
如果您捕获正确的输出流,则可以捕获该函数打印的任何内容。因此,打印某些内容并保存其他输出的最简单方法是将多余的输出重定向到标准错误:
function FUNCTION() {
local LOCAL="value"
echo "$LOCAL"
echo "This function is done now" >&2
}
Run Code Online (Sandbox Code Playgroud)
另一种可能性是记录到文件而不是直接打印日志消息,例如使用以下内容:
log() {
printf '%s\n' "$@" > my.log
}
Run Code Online (Sandbox Code Playgroud)
也就是说,Bash 函数不能返回 variables。唯一实际的“返回”值是退出代码。出于这个原因(以及许多其他原因),如果您想要可靠的日志记录、返回值、异常处理等,您将需要使用不同的语言,如 Python、Ruby 或 Java。
cxw*_*cxw 10
您可以显示有关标准错误的信息消息:
function FUNCTION() {
local LOCAL="value"
echo "$LOCAL" # return this variable
echo "This function is done now" > /dev/stderr # goes to the screen
}
Run Code Online (Sandbox Code Playgroud)
这篇 Linux Journal 文章中有一些其他建议:使用全局变量(您提到过您不喜欢),或者传递变量的名称以返回结果。
归档时间: |
|
查看次数: |
37124 次 |
最近记录: |