2017-04-27 84 views
1

所以我用C寫的一個程序,它在一些參數:調用它allcell 一些樣本參數:-m 1800 -n 9 這些文件被分析:cfdT100-0.trj, cfdT100-1.trj, cfdT100-2.trj, cfdT100-3.trj, ... cfdT100-19.trj 文件被送入:template.file 出的文件:result.file的Bash腳本:如何循環X個文件,以輸入和寫入文件在同一行

$ allcell -m 1800 -n 9 cfdT100-[0-19].trj <template.file> result.file 

但是,當我htop,我看到只有cfdT100-0.trjcfdT100-1.trjcfdT100-9.trj被讀取。如何讓shell從0-19讀取所有文件?

此外,當我編寫腳本文件來自動執行此操作時,應該如何將該行包含在內?這將工作:

"$($ allcell -m 1800 -n 9 cfdT100-[0-19].trj <template.file> result.file)" 
+0

瞭解字符類是如何工作的。 – 123

回答

1

我相信你想改變你的glob表達到cfdT100-{0..19}.trj而不是。

[email protected]:~ $ echo cfdT100-{0..19}.trj 
cfdT100-0.trj cfdT100-1.trj cfdT100-2.trj cfdT100-3.trj cfdT100-4.trj cfdT100-5.trj cfdT100-6.trj cfdT100-7.trj cfdT100-8.trj cfdT100-9.trj cfdT100-10.trj cfdT100-11.trj cfdT100-12.trj cfdT100-13.trj cfdT100-14.trj cfdT100-15.trj cfdT100-16.trj cfdT100-17.trj cfdT100-18.trj cfdT100-19.trj 

您在腳本版本上的引用看起來可以接受。只需更改glob。

+0

謝謝。如果我在bash上,這會改變嗎? 另外我使用用戶輸入來檢查結束文件(在給出的例子中是19) - 所以如果我有一個變量爲'var'。 因此''$(echo cfdT100- {0 .. $ var} .trj)「'? – thatgeeman

+0

是的,我相信你可以在你的glob中使用變量。 –

+0

我想這是特定於我的情況和我使用的程序,但無論如何寫在這裏:必須在我使用變量擴展變量的行之前使用'set -x'或set -o xtrace'。 – thatgeeman

0

無限循環

a() 
{ 
echo "apple" 
a 
} 
a 

使用遞歸函數的這將使無限循環

相關問題