2015-09-01 86 views
0

Linux shell腳本中的另一個新手。如果文件名(只是名稱)比較shell腳本

基本上我有一個文件夾中有很多文件。但是,我需要得到僅與".log"

下面結束我的版本,它不工作

#!/bin/sh 
for i in *; 
do 
     if [ "$i" == "$i".log ]; then 
       echo $i; 
     fi 
done 

可能有人請幫助我在這個文件?非常感謝 !

+0

暫且不說,在POSIX外殼字符串比較操作符是' =',而不是'==',你的'if'語句的條件查找與名稱相同的文件名,並附加一個'.log'。這顯然永遠不會是這樣,因爲每個文件名在附加'.log'後都會有所不同。 –

回答

3

任何你不能這樣做的理由不能這樣做嗎?

for fname in *.log 
do 
    echo $fname 
done 
+0

嗨John3136。謝謝您的幫助。有沒有一種方法可以使用if語句來實現這一點? – NewLands

+0

@ user2164400:是的,有些方法可以使用if語句來做到這一點,但是如果你想要的是循環所有'* .log'文件,那完全沒有意義。如果你真的想做其他事情,我建議接受這個答案,並提出一個新問題來解釋你想要達到的目標以及你曾經嘗試過的 - 你會以這種方式得到更有用的答案。 –

+0

只是爲了記錄,用if語句做這件事的一種方法是'if [-z「$ {f %% * .log}」];然後 ...; fi'。 –