Bash shell从文件夹中读取文件名,并为每个具有相同名称的输入文件创建输出文件:

时间:2013-07-16 19:14:42

标签: 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,但我无法在输出文件中获取输入文件的名称。 任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

下划线是变量名中的有效字符。

执行:

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

您的代码尝试使用名为f_july_15的变量。当变量名后跟一个可以作为变量名的一部分的字符时,你需要使用大括号来分隔变量名。