2014-03-12 80 views
2

我需要一個示例bash腳本來比較文件的第一行(Result.txt)與另一個文件(table.csv)的第一行和第一列,然後將結果發送到一個html文件。比較文本和csv文件的內容

我在編碼非常基本的,這是我迄今發現:

#!/bin/sh 
Result.txt="$(head -n 1 < $1|tail -n 1)" 
table.csv="$(head -n 1 < $2|tail -n 1)" 
test "$R.txt" = "$sheet.csv" && (echo The same; exit 0) 

感謝您的幫助

+1

即使你的外殼讓你擁有」。在一個變量名字符,這不是一個好主意。 'Result =「...」'更容易。你真的意味着你的代碼的最後一行使用了一個'Result.txt'變量,而不僅僅是'R.txt'。對? '「$ R.txt」'將永遠是空的。你還需要爲你的HTML文件應該是什麼樣子提供某種類型的規範。閱讀awk,它是'printf'語句。祝你好運。 – shellter

回答

2

稍微調整你的腳本。

#!/bin/bash 
Res=$(head -n 1 "$1") 
tab=$(head -n 1 "$2") 
[[ $Res == $tab ]] && echo The same 

  • 「點」不是有效的標識符(即,變量名)字符:有效是字母,數字和下劃線,並且第一個字符不能是數字。
  • 如果你正在做head -1,也沒有必要管到這一點tail -1
  • 我覺得[[test更具可讀性,這主要是因爲[[迫使你有]]
  • 括號啓動子shell是矯枉過正的回聲聲明。
    • 出口只會退出子shell不是你的程序
    • 如果您有多個語句,用if ...; then ...; fi - 這是更具可讀性。
+0

感謝您的回覆 – user3409828