Closed renpoo closed 3 years ago
お世話になります。 『実践ユニケージ開発手法 02:シェルスクリプト学習編』の第14章『帳票出力』を写経していて、divsen がらみのエラーではないか、という件に遭遇しました。
こちらで divsen (Python)の中味を拝見したところ、196 行目で if i < f[0]: となっています。
if i < f[0]:
このとき例えば 1 〜 5 のフィールドを持つ行を入力して echo "1 2 3 4 5" | divsen -s 2 3 4 と実行すると、list index out of range を起こして不正終了してしまいます。
echo "1 2 3 4 5" | divsen -s 2 3 4
先程の 196 行目の if 文を if len(f) == 0 or i < f[0]: として、コマンドライン引数で取得した key を使い尽くしたあとでも動くようにすると、とりあえず問題を回避できました。
if len(f) == 0 or i < f[0]:
これは、何故こうなっているのでしょうか。 場合によってはなんらかの修正をしていただいても宜しいでしょうか? 御検討のほど、宜しくお願いします。
renpooさま。ご指摘ありがとうございます。 "list index ouf of range" で例外終了するのは意図した動作ではありません。 推薦いただいた修正方法をそのまま適用して問題なく動作するようになりました。
https://github.com/usp-engineers-community/Open-usp-Tukubai/commit/32a8aecca542fba288221b56e150e6634eee112a
お世話になります。 『実践ユニケージ開発手法 02:シェルスクリプト学習編』の第14章『帳票出力』を写経していて、divsen がらみのエラーではないか、という件に遭遇しました。
こちらで divsen (Python)の中味を拝見したところ、196 行目で
if i < f[0]:
となっています。このとき例えば 1 〜 5 のフィールドを持つ行を入力して
echo "1 2 3 4 5" | divsen -s 2 3 4
と実行すると、list index out of range を起こして不正終了してしまいます。先程の 196 行目の if 文を
if len(f) == 0 or i < f[0]:
として、コマンドライン引数で取得した key を使い尽くしたあとでも動くようにすると、とりあえず問題を回避できました。これは、何故こうなっているのでしょうか。 場合によってはなんらかの修正をしていただいても宜しいでしょうか? 御検討のほど、宜しくお願いします。