1

在 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

1 回答 1

4

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

做:

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

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

于 2013-07-16T19:19:02.720 回答