2014-01-22 242 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