在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
,但我无法在输出文件中获取输入文件的名称。
任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:4)
下划线是变量名中的有效字符。
执行:
./"$f" > "${f}_july_15.txt"
您的代码尝试使用名为f_july_15
的变量。当变量名后跟一个可以作为变量名的一部分的字符时,你需要使用大括号来分隔变量名。