一些类似 Bourne 的 shell 支持关联数组:(ksh93自 1993 年以来)、zsh(自 1998 年以来)、bash(自 2009 年以来),尽管 3 之间的行为存在一些差异。
一个常见的用途是计算某些字符串的出现次数。
但是,我发现以下内容:
typeset -A count(( count[$var]++ ))
对某些值不起作用$var,我听说如果 的内容处于或可能处于攻击者的控制之下,它甚至会构成任意命令执行漏洞$var。
这是为什么?有问题的价值观是什么?我该如何解决它?
有问题的代码:
ls | cat -n | while read n f; do mv "$f" `printf "video_%03d.mp4" $n`; done
Run Code Online (Sandbox Code Playgroud)
上面的代码将执行的目录中的所有文件/文件夹重命名为:
video_001.mp4
video_002.mp4
video_003.mp4
and so on...
Run Code Online (Sandbox Code Playgroud)
但是,最好只针对特定类型的文件,例如只重命名.mp4文件,而不是重命名包括目录在内的所有内容。