お仕事の話。
ある理由から、今までkshで動かしていたシェルスクリプトをbashで動かすことになった。
どちらもBシェル系なので、さほど大きな違いはなく、ほぼそのままで動くことには動くのだが・・・一部書き換えないといけない部分があったり。
その辺を備忘録を兼ねてメモメモ。
まずはお約束な部分で、1行目。
#!/bin/ksh
となっているところを、
#!/bin/bash
に書き換える。こんなこと忘れる訳がない!と言いたいところですが、大量のシェルスクリプトを手動で書き換えていく場合に、よく忘れる部分(笑)
次に、改行コード。echoコマンドなどの中で改行を入れるために「\n」を入れていることがありますが、bashはこれを文字として出力してしまうので、書き換えてあげないといけない。
例えば、
echo "\nエラー発生!\n"
という行があったとすると、
echo $'\nエラー発生!\n'
と書き換えてあげることで、bashでも改行コードとして認識してくれる。
とりあえず、今のところこれ以外の書き換えが必要な場面には出くわしたことは無いけど、以前どこかで「書式指定変数(typeset)はbashで使えない」と見かけたような気がする。
けど、そもそもbashで書式指定変数は普通に使えるし、古いバージョンのことなのか、「そのままでは使えない」のか、何か別のものと見間違えたのか。自分はksh上ではほとんど書式指定変数を使わないので、実際にはkshからの移行で使ったこともなく、真実の程は不明。
ちなみに、kshもbashもバージョンにより動作が異なる可能性があるので注意!
コメント