我们有用 bash 脚本编写的 CGI 应用程序。我试图理解下面的代码片段是如何工作的。基本上它是一个下拉菜单,选择由 _getDocType 逻辑控制。该函数如何获取“imgCodeStr”的值?所有这些代码都位于一个用 bash 编写的 cgi 文件下。
HTML生成功能
<select id="docType" name="doctype" style="width:100%">
$(_getDocType)
</select>
其中 _getDocType 函数定义是
_getDocType()
{
tmpIfs=IFS
IFS="#" docCodeArr=($imgCodeStr) <-- Please explain this specifically
IFS=tmpIfs
for (( i=0; i<${#docCodeArr[*]}; i++ ))
do
echo "<option value=\"${docCodeArr[$i]}\">${docCodeArr[$i]}"
echo "</option>"
done
}
答案1
这是一个更简单的例子:
var='a#b#c'
IFS=\# arr=($var)
echo "${arr[@]}"
该构造arr=(...)
构建一个数组。由于IFS
设置为#
, 的值var
被分割成单词 at#
而不是空格,所以
IFS=\# arr=($var)
相当于
arr=(a b c)
因此,该数组由元素、和arr
组成。a
b
c
出于同样的原因,是一个数组,由split atdocCodeArr
的值组成。这就是全部内容了。imgCodeStr
#
请注意,如果 的值imgCodeStr
包含通配符( 之间的字符\[?*
),shell 会将通配符模式扩展为匹配的文件名。为了避免这种情况,请放在set -f
该行之前以禁用通配符扩展。如果需要重新启用通配符扩展,请使用set +f
.