2

1 つの bash スクリプトで、次の構造を見つけました。

if [[ "${xvar[id]:0:${#cnt}}" != "$cnt" ]]; then

誰かが上記の条件が何をするのか説明できますか?

4

1 に答える 1

4

複雑な式は次のとおり${xvar[id]:0:${#cnt}}です。

$xvar配列である必要があり、おそらく連想的である必要があります。連想的である場合、その部分${xvar[id]}は文字列'id'で識別される配列の要素を参照します。そうでない場合は、コメントでchepnerが指摘しているように、変数によってインデックス付けされた要素を参照します$id(ネストされたものは省略できます)。$

式の${xxx:0:${#cnt}}一部は、オフセット0から変数の長さまでの部分文字列を参照します$cnt(変数${#cnt}内の文字列の長さも同様です$cnt)。

${xvar[id]}全体として、テストはの最初の文字がの値と同じであるかどうかをチェックします$cnt。したがって、の値$cntのプレフィックスの値も同じ${xvar[id]}です。

于 2012-09-23T23:33:34.760 に答える