2011-08-13 72 views
4

$我不工作......這讓我瘋狂!這個簡單的bash命令有什麼問題?

for i in {1..200}; 
do echo "/scratch/inputTest/prob/timit.test.pg.list_10_$i_prob.bin" >> longProbList; 
done 

在文件中有剛

/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 
/scratch/inputTest/prob/timit.test.pg.list_10_.bin 

回答

7

它認爲你的變量名是$i_prob因爲下劃線是一個變量名的有效字符。使用${i}解決這個問題:

for i in {1..200}; 
do echo "/scratch/inputTest/prob/timit.test.pg.list_10_${i}_prob.bin" >> longProbList; 
done 
+0

的感謝!那麼作品 – Kiarash

1

你已經忘記了 「」 大約$我

for i in {1..200}; 
do echo "/scratch/inputTest/prob/timit.test.pg.list_10_"$i"_prob.bin" >> longProbList; 
done 
+2

'$ {i}'是一種更爲常見的方式。 –

+0

@Aaron說誰?我的可讀性更好。即使是stackoverflow語法突出顯示器也能更好地識別我的。 – therealmarv

+0

我欽佩你的虛張聲勢;但我同意@Aaron。你的機制也是正確的,但是使用'$ {var}'符號通常更好,尤其是如果變量值包含空格並且它們必須被保留(在這裏我不同意,我同意)。 –

相關問題