bash(重要な場合はバージョン3.2.57(1))にshをエミュレートするモードで組み込み-n
オプションを実装させる方法はありますかecho
?
echo -n
特に、M個の異なるスクリプトでN個の呼び出しを見つけて書き換えるのではなく、長年にわたってうまく機能してきた(たぶん不運かもしれません)どこかに設定するオプションがあるかどうか疑問に思います。明らかにbashの組み込み関数はecho
これを行うことができます-n
。なぜなら、フルbashモードでは可能だからです。
echo -n
[免責事項:はい、最初は移植性がないことを知っていますが、printf
お勧めします。 ]
注:1つのコメントは、このbashバージョンが「17年前」と指摘しました。誰かがこれをAppleに知らせる必要があります。これは、私が新しく購入したMacにインストールされたMacOS Ventura 13.0に同梱されているバージョンです。
ベストアンサー1
私が思いつく最善のアイデアは、組み込み機能をGNU coreutilsのecho
「本当の」実行可能ファイルに置き換えることです。これはbashがある場合はほぼ確実にインストールされています。echo
echo() { "$(type -P echo)" "$@" ; }
内蔵アイテムを隠すだけです。
GNU Coreutilはecho.c
実際にはそれほど長くないので、「私はUNIX System Vで動作していますが、この動作は予想されますか?」などの特殊なケースでは、処理、--help
印刷、および同様の作業が大部分を占めています。厳しく必要に応じて、シェルスクリプトに小さなC実装を含め、echo
POSIX指定手段を介してそれらを配置することを検討できます(c99
実装したことがある場合)。これは2000年代のマシンなので、Perlがあると仮定してPerlで同じ機能を実装することをお勧めします。