FreeBSDを実行している共有ホスティングであるサーバー用のシェルスクリプトを書いています。また、Linuxを実行しているPCでローカルにテストできるようにしたいと考えています。したがって、私はそれらを移植可能な方法で記述しようとしていますが、それsed
を行う方法はありません。
私のウェブサイトの一部は生成された静的HTMLファイルを使用し、このsed行は各再生成の後に正しいDOCTYPEを挿入します:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
sed
Linux上のGNU で動作しますが、FreeBSD sed
は-i
オプションの後の最初の引数がバックアップコピーの拡張であると想定しています。これは次のようになります。
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
しかし、GNUはsed
順番に式が直後に続くことを期待します-i
。(改行処理の修正も必要ですが、それはここですでに回答されています)
もちろん、スクリプトのサーバーコピーにこの変更を含めることもできますが、バージョン管理にVCSを使用することは混乱します。完全に移植可能な方法でsedでこれを達成する方法はありますか?
-i