function echo_message(){
message="$1"
if [ -n "$message" ]; then
echo -e "\t${message}" | tee -a "${logfile}"
fi
}
这段代码是一个Shell脚本函数,名为`echo_message`。它的作用是将传入的参数打印到标准输出,并同时将该信息追加到一个日志文件中。下面是对这段代码的逐行解释:
1. `function echo_message(){`:定义了一个名为`echo_message`的函数。
2. `message="$1"`:这行代码将函数的第一个参数赋值给变量`message`。在Shell脚本中,`$1`代表传递给函数的第一个参数。
3. `if [ -n "$message" ]; then`:这是一个条件语句,检查变量`message`是否非空。`-n`是一个测试操作符,用于检查字符串长度是否非零。
4. `echo -e "\t${message}"`:如果`message`非空,这行代码将打印变量`message`的值。`-e`选项允许解释转义字符,例如`\t`表示制表符,它将输出内容缩进。
5. `| tee -a "${logfile}"`:`tee`命令用于将`echo`的输出同时发送到标准输出和文件。`-a`选项表示以追加模式写入文件,而不是覆盖原有内容。`${logfile}`变量应包含日志文件的路径。注意,`${logfile}`变量需要在函数外部定义并赋值。
6. `fi`:结束`if`条件语句。
7. `}`:结束函数定义。
### 举例说明:
假设我们有一个日志文件`log.txt`,并且我们想要记录一些信息。首先,我们需要在脚本的某个地方定义并初始化`logfile`变量:
logfile="log.txt"
然后,我们可以调用`echo_message`函数来记录信息:
echo_message "Hello, this is a test message."
执行上述命令后,"Hello, this is a test message." 将被打印到终端,并且追加到`log.txt`文件中。如果`log.txt`文件原本包含内容,新的消息将添加到文件的末尾,而不是覆盖原有内容。
如果调用`echo_message`函数时没有提供参数:
echo_message ""
由于`message`变量为空,条件检查`[ -n "$message" ]`将失败,因此不会有任何输出,也不会向日志文件写入内容。