エコ版かどうか

エコ版かどうか

専門家https://stackoverflow.com/questions/906590/echo-version-doesnt-worksバージョンを知る必要があります。echo

$ type -a echo | cut -d " " -f 3- | xargs -d '\n'
a shell builtin /usr/bin/echo /bin/echo
$ /usr/bin/echo -v
-v
$ /bin/echo -v
-v

ベストアンサー1

標準はecho任意のオプションを許可しません(またはXSI拡張の場合はパラメータのみが認識されます-n)。多くの場合、echo組み込みシェルを使用していますが、私がテストしたすべてのシェルで組み込みがecho認識されませんでした--version。しかし、少なくとも別の方法で認識しました-e。私が見つけた唯一の認識は、多くのLinuxシステムにインストールされているGNU coreutilsのものでした。-E-necho--version/bin/echo

したがって、ほとんどの場合、バージョン識別の問題はecho実行中のシェル識別に帰結します。または、/bin/echo現在使用しているシステムがBusyboxではなくGNUであることがわかっている場合は、実行してください。しかも上から見たようにマニュアルページ、GNU coreutilsバージョンのみがサポートされている、サポートされてい--versionない、-vまたは-V


しかし、一般的に言えば、何かを達成しようとしている場合は、特定のバージョンに依存する必要はなく、サポートされている機能にのみ依存する必要があります。この観点printfからecho

文字列をそのまま印刷するには、次のようにします。

printf "%s\n" "$var"

文字列でバックスラッシュエスケープを処理するには、次のようにします。

printf "%b\n" "$var"

最後の改行文字をスキップするには、\n最初のパラメータからその文字を削除してください。

バラよりなぜprintfがechoより優れているのですか? そしてechoを使って「-e」を印刷するには?

おすすめ記事