C2A0問題を解決する

Pocket

自分でWebにのせていたシェルスクリプトをコピペして実行しようとしたらこんなエラーメッセージが表示されました。

rbenv-install.sh: 行 28: $'\302\240': コマンドが見つかりません

何度見返してもそんな行にコマンド入れた記憶はないし、
おかしいなあと思ってぐぐってみたら \302\240 という実体参照は
UTF-8 のバイトシーケンスに直すと C2 A0 にマッピングされるようで、
これは実際に 通称C2A0問題 と呼ばれているようです。
ホワイトスペースもどきです。
デザインは崩れるし、うまく実行されないし、いいことはないです。

バイナリエディタで該当ファイルを検索してみたらしっかり C2 A0 が埋め込まれていました。

2013-10-22_19h58_03

かんべんして欲しいのでsedで半角ホワイトスペースに置換してあげて実行したらうまく動いてくれました。

sed -i -e 's/\xc2\xa0/ /g' rbenv-install.sh

Rubyが好きなのでこういう使い捨てスクリプトはRubyで書いてみたいのですが、
なんかこういうのはみんなPerlで書いているし、
PerlはどのLinuxでも入っているからPerlで書いたほうがいいんですかね。
Windowsでもインストール気軽にできるし。

参考サイト

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください