Excel で英数字の全角・半角を変換する

Excel には 英数字(+カタカナ)の 全角・半角を変換する ワークシート関数があります。
(Excel 2010 で確認)

全角⇒半角は「ASC」です。 プログラム言語だとアスキーコードとか返す同名の関数が あったりするので少し紛らわしいですね。

WRITE_0874_01

=ASC(文字列)

全角の英数カナ文字(2バイト)を、半角の英数カナ文字(1バイト)に
変換します。

半角⇒全角は「JIS」です。

WRITE_0874_02

=JIS(文字列)

半角の英数カナ文字(1バイト)を、全角の英数カナ文字(2バイト)に
変換します。

この 2つの関数はペアなので 変換⇒再変換で元に戻ります。

WRITE_0874_03

積ん読 2017/10/17

Bash のエラー発生時に終了するオプション

通常、Bash の処理は エラーが発生しても次のステップへと 進んで行きます。

[test1.sh]

true
echo 1=$?

false
echo 2=$?

true
echo 3=$?

false
echo 4=$?
$ bash test1.sh

1=0
2=1
3=0
4=1

エラーが発生したときに止めるには オプション "-e" を付けます。

$ bash -e test1.sh

1=0

また、パイプしている場合 最後のコマンドの結果が返ります。

[test2.sh]

true | true
echo 1=$?

true | false | true
echo 2=$?

false | true
echo 3=$?

true | false
echo 4=$?
$ bash test2.sh

1=0
2=0
3=0
4=1

これにオプション "-e" を付けて実行しても

$ bash -e test1.sh

1=0
2=0
3=0

最後のコマンドで発生しているエラーしか 反応してくれません。

このようなときは さらに オプション "-o pipefail" を指定します。

$ bash -e -o pipefail test1.sh

1=0

これでパイプ中のエラーが返るようになります。

Bash の未定義の変数をチェックするオプション

Bash には プログラム言語のように 未定義の変数をチェックできる オプション "-u" があります。

このオプションを指定していると 未定義の変数が出てきたところで エラーにしてくれます。

試してみます。

[test.sb]

A=a
C=c
echo A=$A
echo B=$B
echo C=$C

まずは普通に実行。

$ bash test.sh

A=a
B=
C=c

$ echo $?

0

変数 B だけ定義されていないので値が空です。

次にオプションを付けて実行。

$ bash -u test.sh

A=a
test.sh: line 4: B: unbound variable

$ echo $?

1

途中でエラーになりました。 安全ですね。

他のオプション同様 set コマンドなどでも指定できます。

Bash の実行内容のトレースのオプション

Bash には 処理の実行内容をトレースできる デバッグに便利な オプション "-x" と "-v" があります。

文法チェックの "-n" と同じ様に 色々な方法で指定できます。

$ bash -xv test.sh
#!/bin/bash -xv
set -xv

ちなみに、オプション "-x" は実行された内容を出力し オプション "-v" は実行するなコマンドを出力します。

次のシェルスクリプトで試してみます。

[test.sh]

YESTERDAY=$(date --date "1 day ago")
echo $YESTERDAY

まず普通に実行。

$ bash test.sh

Sun Oct 1 21:55:13 JST 2017

まず オプション "-x" だけを指定。

$ bash -x test.sh

++ date --date '1 day ago'
+ YESTERDAY='Sun Oct  1 21:55:23 JST 2017'
+ echo Sun Oct 1 21:55:23 JST 2017
Sun Oct 1 21:55:23 JST 2017

追加で出力された行の先頭に "+" や "++" が付いてます。

"++" は "$()" で実行された部分ですね。

変数が値に転換されています。

次に オプション "-v" だけを指定。

$ bash -v test.sh

YESTERDAY=$(date --date "1 day ago")
date --date "1 day ago"
echo $YESTERDAY
Sun Oct 1 21:55:28 JST 2017

こちらは "+" などは付かず、変数もそのままですね。

"$()" の実行が切りだされています。

さらに オプション "-x" "-v" を両方指定。

$ bash -xv test.sh

YESTERDAY=$(date --date "1 day ago")
date --date "1 day ago"
++ date --date '1 day ago'
+ YESTERDAY='Sun Oct  1 21:55:44 JST 2017'
echo $YESTERDAY
+ echo Sun Oct 1 21:55:44 JST 2017
Sun Oct 1 21:55:44 JST 2017

実行するコマンド、実行内容が全て出力されました。

また オプション "-x" "-v" の指定を取り消すには オプション "+x" "+v" を指定します。

$ set -x

$ YESTERDAY=$(date --date "1 day ago")

++ date --date '1 day ago'
+ YESTERDAY='Sun Oct  1 22:06:42 JST 2017'

$ echo $YESTERDAY

+ echo Sun Oct 1 22:06:42 JST 2017
Sun Oct 1 22:06:42 JST 2017

$ set +x

+ set +x

$ YESTERDAY=$(date --date "1 day ago")
$ echo $YESTERDAY

Sun Oct 1 22:06:57 JST 2017

$ set -v
$ YESTERDAY=$(date --date "1 day ago")

YESTERDAY=$(date --date "1 day ago")
date --date "1 day ago"

$ echo $YESTERDAY

echo $YESTERDAY
Sun Oct 1 22:07:09 JST 2017

$ set +v

set +v

$ YESTERDAY=$(date --date "1 day ago")
$ echo $YESTERDAY

Sun Oct 1 22:07:20 JST 2017

文法チェックのオプション "-n" と "-v" を組み合わせると 実行せずに、実行内容だけを確認することができます。

$ bash -nv test.sh

YESTERDAY=$(date --date "1 day ago")
echo $YESTERDAY

Google サイト内検索

Amazonアソシエイト