So-net無料ブログ作成
検索選択
2017年05月| 2017年06月 |- ブログトップ

bashでの配列の使用 [Linux]

Perl スクリプトをシェルスクリプト(bash on Linux) に移植する必要があり、対応を行った。
この過程で、スクリプトの可読性を良くするために配列(連想配列を含む)を使用した。

以下は、備忘録として、配列の使用に関して要点をまとめたものである。

1. 配列 (indexed array)


(1) 変数の宣言


通常の変数の場合と同じである。
・通常は変数の宣言は不要である。
・local により、関数内のローカル変数として宣言することが可能である。


(2) 値の設定


(a) 要素毎の設定

a_demo[0]=a
a_demo[1]=b


(b) 全要素の設定

a_demo=(a b)


(補足)
・空の配列の作成: a_demo=()
・配列の宣言と要素の設定を同時にすることが可能である。
 local a_demo=(a b)


(c) 配列要素の追加

a_demo+=(c)


(3) 値の参照

${#a_demo[*]} ... 要素数
${a_demo[*]} ... 全要素
${a_demo[n]} ... n 個目の要素


(補足)
* の代わりに @ を使用することも可能である。
両者の違いは、通常の変数参照時の "$*" と "$@" の違いと同様である。


2. 連想配列 (associative array、hash)


bash v4 で追加された機能である。
未対応のバージョンでは、エラーとなる。

(1) 変数の宣言


使用する前に、連想配列としての変数の宣言が必要である。

declare -A h_demo


(補足)
関数内で上記の変数宣言を行った場合には、当該関数内でのみ有効となる。
(関数内でのローカル変数となる。)


(2) 値の設定


(a) 要素毎の設定

h_demo[Jan]=1
h_demo[Feb]=2


(b) 全要素の設定

h_demo=([Jan]=1 [Feb]=2)


(補足)
・空の連想配列の作成: h_demo=()
・連想配列の宣言と要素の設定を同時にすることが可能である。
 declare -A h_demo=([Jan]=1 [Feb]=2)


(3) 値の参照

${#h_demo[*]} ... 要素数
${!h_demo[*]} ... 全要素(key)
${h_demo[*]} ... 全要素(value)
${h_demo[key]} ... 特定の要素(key に対応する value)


(補足)
* の代わりに @ を使用することも可能である。
両者の違いは、通常の変数参照時の "$*" と "$@" の違いと同様である。



xawtvのウィンドウサイズを変更すると画像が表示されなくなる [Debian]

[ソフトウェアのバージョン]
xawtv 3.103-3+b1
linux-image-3.16.0-4-686-pae 3.16.39-1+deb8u2

1. 発生事象


Debian 8 において、xawtv のウィンドウサイズを変更すると画像が表示されなくなる。

・xawtv を再起動すると回復する。
・Debian 7 (linux-image-3.2.0-4-686-pae 3.2.86-1)では発生しない。
・xawtv 3.102-3 (Debian 7 のパッケージ)に変更しても状況は変わらない。


2. 原因


kernel 3.16.x 上で発生する xawtv のバグである。
(詳細は、備考を参照。)


3. 対処方法


下記の手順を実施する。

(1) 更新するパッケージの入手


ubuntu 16.10 の下記のパッケージをダウンロードする。

fontconfig-config_2.11.94-0ubuntu2_all.deb
libfontconfig1_2.11.94-0ubuntu2_i386.deb
pia_3.103-4_i386.deb
scantv_3.103-4_i386.deb
xawtv-plugins_3.103-4_i386.deb
xawtv_3.103-4_i386.deb


(補足)
・Debian 8 用の更新パッケージはリリースされていない。
・Debian sid よりも ubuntu 16.10 の方が更新するパッケージの数が少ない。
https://pkgs.org/ 等から当該パッケージをダウンロードする。


(2) パッケージの更新

# dpkg -i *.deb


(補足)
更新内容は、下記の通りである。

・fontconfig-config
 2.11.0-6.3+deb8u1 => 2.11.94-0ubuntu2
・libfontconfig1
 2.11.0-6.3+deb8u1 => 2.11.94-0ubuntu2
・pia
 3.103-3+b1 => 3.103-4
・scantv
 3.103-3+b1 => 3.103-4
・xawtv-plugins
 3.103-3+b1 => 3.103-4
・xawtv
 3.103-3+b1 => 3.103-4

[備考]



2017年05月|2017年06月 |- ブログトップ