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

标签 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

我正在尝试创建一个 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

关于linux - If 语句将变量与列表中的文件进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57587777/

相关文章:

Bash - 文件存在提供不正确的结果

regex - linux查找正则表达式

bash - 如何从终端运行 .sh 或 .bat 文件?

ios - 第三方库使用的框架

java - 创建jar并在没有IDE的Java程序中导入它

linux - 确定芯片组是否能够关闭数据包注入(inject)和监控模式

linux - 如何在 bash 脚本中将字符串或变量作为 awk 的多个参数传递?

java - LINUX下应用程序初始化和支持文件应该放在哪里?

linux - 写入 SOCK_SEQPACKET 是原子的吗?

python:Windows终端中的unicode,使用的编码?