我正在使用bash 4.2在centOS 7上工作,我目睹了奇怪的行为。 这是我尝试做的事情:
我有一个脚本复制模板并将索引名称添加到新文件中,如下所示:
原始文件夹:
为:
另外,该脚本会创建一个存储索引名称的tmp文件。 我想要做的是最终通过curl加载并发送(单独)所有在其名称开头具有索引名称的文件。
问题出在哪里?当索引中有通配符时。 假设索引名称是INDEX *。 新文件是:
tmp文件只包含INDEX *,因为我看是否在其上运行cat。
如果我尝试将内容加载到bash中的变量,如下所示:
index_name=$(<tmp)
echo index name: $index_name
结果是一个字符串,其中包含所有带有INDEX的文件,如下所示:
index name: INDEX*.file1 INDEX*.file2
这很奇怪,因为这不是tmp中的内容,但我尝试至少将此字符串转换为数组,并且只需要我需要的文件列表。 我试过这样:
IFS=' ' read -a index_array <<< "$index_name"
它将字符串转换为1个元素=完整字符串...
的数组我想索引名称中的通配符是造成问题的原因,所以有人知道任何解决方法吗?
我想mabye在没有通配符的情况下保存tmp中的索引名称,然后只加载名称中包含INDEX的所有文件,但这有风险 - 主要是因为我不能保证通配符总是在INDEX端。
那我该怎么办?
有没有办法让bash明白在这种情况下“*”应该被视为字符串而不是通配符?
如果没有,有没有办法让bash将字符串分成sepreated字符串?
任何帮助将不胜感激......
谢谢!