スクリプトに絵文字を追加しても機能しません

スクリプトに絵文字を追加しても機能しません

こんにちは、次のスクリプトがあり、絵文字を印刷しようとしていますが、スクリプトを実行すると絵文字が表示されませんが、printf emoji-utf-codeコンソールで実行すると機能します。私は何を逃したことがありませんか?

#!/usr/bin/env bash

UNICORN='\U1F984\n'

# this does not work when I run the script
printf ${UNICORN}
printf '\U1F984\n'
echo "Riding an ${UNICORN}"

# but when I type the printf command with the UTF-8 code in the console it works.

PS:スクリプトを実行するためにここにシェルを追加するにはどうすればよいですか?他の投稿された質問で見たことがあります。

編集1:いくつかのコメントの後にコードが修正されました。

それでもコンソールからこれを得ています:

ここに画像の説明を入力してください。

ベストアンサー1

printf '\U1F984\n'

Bourne Againシェルバージョン4.1以前は、組み込み\Uコマンド\uのフォーマットパラメータのエスケープシーケンスを理解していませんprintf。これを使用するにはバージョン4.2以降が必要です。この追加は、Bourne Again シェルバージョン 4.2 の 2011 リリースノートに含まれています。

または、Zシェルバージョン4.1.1以降を使用してください。 Zシェルはprintf数年前の2003年にこの拡張を受けました。 93 Kornシェルにもしばらくこの拡張が適用されました。

もちろん、コードポイントをUTF-8に変換し、UTF-8を8進数でエンコードされたオクテットシーケンスに直接印刷することもできます。これは拡張されていない標準コンプライアンスに対して機能しますprintf

printf '\360\237\246\204\n'

おすすめ記事