Linux 将变量与列表中的文件进行比较的If语句

Linux 将变量与列表中的文件进行比较的If语句,linux,bash,terminal,emulation,Linux,Bash,Terminal,Emulation,我正在使用终端模拟器。我有一个保存文件的文件夹,正在尝试确定输入的文本是否与列表中的任何文件匹配 我使用ls创建了一个名为saveFiles的变量。仅显示带有.save的文件并将其从输出中删除: saveFiles=$(cd "${0%/*}"/save; ls *.save* | ls *.save*; cd "${0%/*}") echo -n ">" read -r "name" 因此,$saveFiles等于: Savegame1 savegame2 savegame3 我

我正在使用终端模拟器。我有一个保存文件的文件夹,正在尝试确定输入的文本是否与列表中的任何文件匹配

我使用
ls
创建了一个名为
saveFiles
的变量。仅显示带有
.save
的文件并将其从输出中删除:

saveFiles=$(cd "${0%/*}"/save; ls *.save* | ls *.save*; cd "${0%/*}")
echo -n ">"
read -r "name"  
因此,
$saveFiles
等于:

Savegame1 savegame2 savegame3
我试图做一个if语句,测试输入的变量是否等于文件夹中的任何文件

以下脚本可以工作,除非我键入文件末尾包含的字母。因此,如果其中一个文件名为savegame,那么如果我键入game,它会显示一个匹配项,因为game.save包含在字符串中

if [[ $saveFiles = *"$name".save* ]]
then
   scene=$(cat "save/$name".save)
fi
我需要找到一种方法来测试
$saveFiles
中的任何字符串是否等于输入的变量
$name

要重申,文件夹中的文件:

Save1.save
Save2.save
...

Read `$name`
如果
$name
与列表中的任何文件匹配,则加载场景,否则重复


我希望这不会让人困惑。请随时要求我进一步澄清。谢谢。

也许我没有正确理解这个问题,但是为什么不先请求文件名,然后用该名称查询文件系统,例如

read name
if [[ -f "${name}.save" ]];
    echo "Found the file ${name}.save"
fi

欢迎来到StackOverflow!对于多行代码块,您可以使用重重音字符“”(例如
code
)或tripple“``更好地格式化问题中的程序代码。问题是,当我键入不在列表中的保存时,它会将游戏设为不存在的文件名。我会看看这是否有效。这正是我所需要的。我只是想澄清一下。这个查询是如何工作的-f是正确的。所以它询问文件夹中的文件是否与文件名匹配?好的,我看到它说的是搜索是否与文件名匹配。我很高兴事情就这么简单。这工作做得很好。谢谢。太好了:-)供参考:我刚修改了一个打字错误-
读名字
,而不是
读$name
。是的,我没看到。我还有一个问题。是否有方法使用相同的-f查询来测试列表中的文件是否包含.save?正在尝试生成返回“文件夹中无保存”的if语句