Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

環境変数 POSIXLY_CORRECT

RHEL3に含まれているような古いwcコマンド(ver.4.5.3)を使っている場合、

$ cat test.sh
#!/bin/sh

cnt=`cat somefile.txt | wc -l`
echo "cnt=${cnt}"
echo cnt=${cnt}
echo ${cnt}
$ 

といったスクリプトを実行すると、

cnt=      6
cnt= 6
6

のように空白が含まれてしまう場合があります。man wcによると

POSIX の注意
       wc は 7 桁のフィールドに右詰でカウント数を表示する。しかし POSIX は、カ
       ウ ントの間 (と最後のファイル名との間) にはスペース一つだけをおくように
       命じている。後者のフォーマットは、環境変数 POSIXLY_CORRECT を指定する
       と得られる。

とあり、カウント数は7桁固定っぽいです。そこで環境変数 POSIXLY_CORRECTを設定してやるとうまくいきます。

export POSIXLY_CORRECT=
./test.sh
cnt=6
cnt=6
6

ちなみに、CentOS4.4のwc(ver.5.2.1)では、特に設定する必要はありません。