2013-07-16 64 views
1

在bash shell中我讀一個文件夾中的所有文件,如下所示:的Bash shell從文件夾中讀取文件的名稱和具有相同名稱的每個輸入文件創建一個輸出文件:

#!/bin/bash 
FILES=MyFolder/* 
for f in $FILES 
do 
    echo "Started $f file..." 
    ./$f > $f_july_15.txt 
    echo "Finished $f file..." 
done 

在第6行我試圖將每個文件的輸出保存在包含輸入文件名稱的txt文件中,如下所示:$f_july_15.txt。我注意到txt文件根本沒有被創建,而echo調用和命令./$f得到正確執行。我在名稱內部移動了一點點$f,但我無法在輸出文件中獲得輸入文件的名稱。 任何人都可以告訴我爲什麼會發生這種情況,我該如何解決這個問題?

回答

4

下劃線是變量名中的有效字符。

做:

./"$f" > "${f}_july_15.txt" 

您的代碼試圖使用一個名爲f_july_15變量。當變量名後跟可以是變量名的一部分的字符時,您需要使用大括號來分隔變量名。

相關問題