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
如果您注意到您正在使用ksh
or 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 中不是标准命令。