这个函数发生了什么?

这个函数发生了什么?
log ()
{
  A=$1
  print "`date '+%m/%d/%y  %H:%M:%S'`: $A"  >> LOGFILE.txt
  print "$A"
}

这就是我们环境中大多数 shell 脚本中使用日志功能的方式。它已在如下脚本中使用:

if ["blah" != "0"]
then
log "not a zero value"
fi

当if条件满足时,log函数如何工作?

你能解释一下日志函数中每一行的含义吗?

答案1

如果您注意到您正在使用kshor zsh- 它们都有print内置的 shell,这将会有所帮助。

  1. A=$1
  2. print "`date '+%m/%d/%y  %H:%M:%S'`: $A"  >> LOGFILE.txt
  3. print "$A"

第 1 行:$1 表示“函数 log() 的第一个参数”。因此,将第一个参数的值分配给log名为“A”的变量。

第 2 行:“重音符号”(又名“back tics”)意味着“运行包含的命令并将其输出替换为 back-tic'ed 字符串。$A 意味着“名为“A”的变量的值”。因此,通过运行 组成一个字符串date,并插入 的值A。Shell 通常区分右值(分配给的名称)和左值(变量的内容)。“>>”表示将其放在名为“LOGFILE”的文件的末尾。

第 3 行:只需将名为“A”的变量的值写入标准输出。

log函数是进行 sh 脚本日志记录的一种非常常见的方法:将任何消息的一份副本写入带有日期戳的文件,将一份副本写入标准输出。 sh 脚本在终端窗口中运行,消息只会滚动,但也会出现在文件中以供以后调试。

您在 if 语句的 true 子句中调用log传递整个字符串“非零值”作为 function 的第一个形式参数log。这就是第 1 行中分配给变量“A”的值。

答案2

A=$1

将第一个函数参数分配给变量 A

print "`date '+%m/%d/%y  %H:%M:%S'`: $A"  >> LOGFILE.txt

打印日期和变量 A 的值并将其附加到 LOGFILE.txt

print "$A"

打印第一个函数参数

顺便说一句,在这一行中: if ["blah" != "0"]

[前后应该有空格],如下所示:

if [ "blah" != "0" ]

顺便说一句,打印在某些 shell 中不是标准命令。

相关内容