2016-11-22 142 views
1

我正在編寫一個PBS腳本來一次處理多個文件並執行多個操作。作爲變量輸出命令

我想先解壓縮.gz文件(我稍後壓縮),然後處理解壓縮的文件。

下面將解壓縮在$file的文件,但我一旦我解壓縮文件,我想變$file指解壓縮後的版本:

for file in $READS/*2.fq.gz; 
do 
    gunzip $file 
    # continue script with the gunzipped file 
done 

喜歡的東西:

for file in $READS/*2.fq.gz; 
do 
    file=gunzip $file 
    # continue script with the gunzipped file 
done 
+0

什麼是你的標題有問題怎麼辦?該命令的輸出不是文件名。 'gunzip'不會產生任何輸出,它只是靜靜地解壓文件。 – Barmar

回答

3

要刪除的文件$的.gz後綴:

file=${file%.gz} 

請注意,你可能要檢查gunzip命令的結果,看它是否失敗:

for file in $READS/*2.fq.gz; 
do 
    if gunzip $file; then 
     file=${file%.gz} 
     # continue script with the gunzipped file 
    else 
     # gunzip failed (corrupt file?) and already output an error message 
     # try to recover? 
    fi 
done 
+0

當腳本變得更大時,希望不會,因爲循環中的相同變量正在被修改,所以追蹤將更難。使用一個單獨的局部變量或只是簡單地繼續引用'$ {file%.gz}'。 – alvits