Excel には
英数字(+カタカナ)の
全角・半角を変換する
ワークシート関数があります。
(Excel 2010 で確認)
全角⇒半角は「ASC」です。 プログラム言語だとアスキーコードとか返す同名の関数が あったりするので少し紛らわしいですね。
=ASC(文字列) 全角の英数カナ文字(2バイト)を、半角の英数カナ文字(1バイト)に 変換します。
半角⇒全角は「JIS」です。
=JIS(文字列) 半角の英数カナ文字(1バイト)を、全角の英数カナ文字(2バイト)に 変換します。
この 2つの関数はペアなので 変換⇒再変換で元に戻ります。
通常、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 には プログラム言語のように 未定義の変数をチェックできる オプション "-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 には 処理の実行内容をトレースできる デバッグに便利な オプション "-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