If 语句将变量与列表中的文件进行比较
If statement comparing variable to files in list
我正在使用终端模拟器。我有一个包含保存文件的文件夹,我正在尝试确定输入的文本是否与列表中的任何文件匹配。
我使用 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
我正在使用终端模拟器。我有一个包含保存文件的文件夹,我正在尝试确定输入的文本是否与列表中的任何文件匹配。
我使用 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