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
。