2014-01-22 190 views
2

您好,我是shell脚本的总新手。Unix变量声明

我有一个名为logA.log的日志文件和一个B.sh文件。

在日志文件中有一些线,我想通过执行B.sh

在BI找到spesific词在该日志的数量(去年10线)写道

#!/bin/bash 

variableString = tail -10f /home/appuser/logA.log 

grep ERROR $variableString | wc -l 

但输出是:

variableString:命令未找到

我知道“grep”行正在工作,但我无法达到logA in b.sh

我如何定义一个名为variableString截至去年10线logA

回答

1
  • tail -f(“follow”)不会完成,所以它永远不会到达下一行。你的意思可能是tail -n 10-n使之成为POSIX compatible)。
  • 分配变量时,不能在等号周围使用空格。
  • 变量被分配给右侧评估的字符串。如果没有特殊的结构,结果将会是等号后的文字字符串
  • 你应该quote变量,以避免扩大。

总之,您应该使用:

variableString=$(tail -10 /home/appuser/logA.log) 
+0

啊是啊是 “-f” 参数杀了我,感谢疑难杂症 – abidinberkay

2

你的命令变量都OK,但你必须要知道的存储命令输出的方式:var=$(command)。此外,你可能会得到几行,所以引用return命令来保持格式。因此,你应该使用:

variableString="$(tail -10f /home/appuser/logA.log)" 
grep ERROR "$variableString" | wc -l 

当你的错误

variableString:找不到命令

那是因为你定义你的语法,有bash解释执行variableString命令与= tail -10f /home/appuser/logA.log参数。有关详细信息,请参阅Basic bash script variable declaration - command not found