具有空格且元素中无空格的Bash数组

时间:2020-10-09 11:21:26

标签: arrays bash shell while-loop

我知道这个问题的回答方式不同,我已经参考了这里的一些答案以了解我现在的位置。

我正在尝试创建一个脚本,以便在不写入文件夹和病毒扫描文件时实质上监视它们。

我需要它处理的文件/字符串有时会包含空格,有时不会包含空格,有时还会包含特殊字符。目前,它实际上仅适用于名称中带有空格的文件(就像在实际扫描和移动它们时一样),而不适用于没有空格的文件。同样,在每个文件之后(无论是否有空格),while循环都会中断,从而停止脚本并显示以下输出;

communityPlugins: "https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/elixir-1.8.2.ez"

extraPlugins: "rabbitmq_auth_backend_ldap elixir"

我让它可以处理没有任何空格的文件名,但是由于我引入了./howscan.sh: line 29: snmp.conf: syntax error: invalid arithmetic operator (error token is ".conf") ./howscan.sh: line 34: snmp.conf: syntax error: invalid arithmetic operator (error token is ".conf") 方法来使用数组元素,因此它仅适用于带有空格的文件并输出上述错误。

可以随意省略其中的sepscan部分,因为我确定我是否可以使其与其他任务一起使用(它也可以用于显示完整的脚本,以供全面理解)。< / p>

当前脚本:

"${files[$i]}"

让我知道我是否可以提供其他帮助以澄清我的问题。

更新
顺便说一下,/ mnt / Incoming / ToScan /目录中有一个名为snmp.conf的文件。

1 个答案:

答案 0 :(得分:1)

for i in ${files[*]}

应该是

for i in ${!files[*]}
# or
for i in ${!files[@]}

${files[*]}扩展到数组的内容并进行分词。上面的语法扩展为数组的索引列表。

您可能还需要对变量加双引号,例如

if [ "$fileopen" -ne 0 ]; then