2014-09-28 161 views
-1

我是shell腳本中的新手。我寫了這個劇本之後對2個不同的輸入文件:需要幫助TAR shell腳本

#!/bin/sh 
last=`ls [JKT-ABC]*.tar | sed s/.tar//g | sort -g | tail -1` 
if(($last%1==0)) 
then 
    tar -cf `date '+%W%b%d'`.tar [JKT-ABC]*.tar 
fi 

last=`ls [JKT-DEF]*.tar | sed s/.tar//g | sort -g | tail -1` 
if(($last%1==0)) 
then 
    tar -cf `date '+%W%b%d'`.tar [JKT-DEF]*.tar 
fi 

執行這個腳本後,輸出的是一個單一的.tar文件名爲:xxSep28。因此,2個輸入文件已成爲一個TAR(xxSep28)。這不是我想要的。

我的問題是:

  • 我怎麼能輸出/使用tar文件中的腳本的全名? (例如:xx.Sep28.JKT-ABC
  • 爲什麼通過此腳本將兩個輸出文件合併爲一個文件?我如何讓他們分開?
+0

什麼是你正在試圖解決這個問題?我的意思是,你想要你的腳本做什麼? – 5gon12eder 2014-09-28 14:01:34

+0

我想讓輸出tar文件有一個像這樣的名字xx.Sep28.JKT-ABC,並將tar文件打包成2個文件(因爲在這個腳本中我輸入2個不同的文件,執行後文件總是成爲一體)。 – Pane 2014-09-28 14:09:07

+0

我很害怕,我還是不明白。您顯示的代碼不會接受任何輸入,並執行兩次完全相同的任務(可能會再次覆蓋剛剛創建的tar文件)。也就是說,if語句是否有效。你可以給一個例子「之前的目錄」,「腳本調用」和「目錄後」? – 5gon12eder 2014-09-28 14:16:47

回答

1

你提的問題是很難理解......你的腳本創建一個名爲

<week><month><day>.tar   # 38Sep28.tar today for example 

tar文件,然後立即用相同的名稱和不同內容的另一個tar文件覆蓋它。

顯而易見的事情是使兩個tar命令每個寫入不同的文件。所以我建議你改變第一tar命令:

tar -cf "$(date '+%W%b%d')JKT-ABC.tar" something 

,第二次

tar -cf "$(date '+%W%b%d')JKT-DEF.tar" something 

還有一個問題,但我還是不明白,那就是你的意思是什麼

[JKT-ABC]*.tar 

這意味着,只有中的字母J,K,T提出的名稱通過的文件A,B或C,然後.tar,所以它會匹配文件名爲(!):

JJ.tar 
CBACBACBCCCCCCCC.tar 

,我不認爲那是你的意思,特別是因爲範圍T through to A是不可能的......