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
단어로 분할되므로#
IFS=\# arr=($var)
동등하다
arr=(a b c)
따라서 배열은 arr
, 및 요소로 구성됩니다.a
b
c
같은 이유로 docCodeArr
분할된 값으로 구성된 배열입니다. 그게 다야.imgCodeStr
#
값에 imgCodeStr
와일드카드( 사이의 문자 \[?*
)가 포함되어 있으면 쉘은 와일드카드 패턴을 일치하는 파일 이름으로 확장합니다. 이를 방지하려면 set -f
와일드카드 확장을 비활성화하는 줄 앞에 두십시오. 와일드카드 확장을 다시 활성화해야 하는 경우 set +f
.