idn2はbashスクリプトやコマンドラインとは異なる動作をする

idn2はbashスクリプトやコマンドラインとは異なる動作をする

ping -qc 1 $(idn2 правительство.рф)bash スクリプト ファイルに次のコマンドがありますping.sh

スクリプトを実行すると次のように$ bash -x ./ping.shなります:

++ idn2 правительcтво.рф
+ ping -qc 1 xn--c-7sbgbnrw0abkzd2k.xn--p1ai
ping: unknown host xn--c-7sbgbnrw0abkzd2k.xn--p1ai
+ exit

idn2結果的にxn--c-7sbgbnrw0abkzd2k.xn--p1ai

$ ping -qc 1 $(idn2 правительство.рф)しかし、ターミナルの bash コマンドラインにコマンドを入力すると、別の結果が返されます。

PING xn--80aealotwbjpid2k.xn--p1ai (95.173.135.62) 56(84) bytes of data.

--- xn--80aealotwbjpid2k.xn--p1ai ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

結果idn2xn--80aealotwbjpid2k.xn--p1ai

これは何ですか?

答え1

つまり、国際ドメイン名は必ず正しいキーボード レイアウトで入力し、間違ったキーボード レイアウトで国際ドメイン名のスペルを修正しないようにしてください。

スクリプト内の文字列を手動で書き直しправительство.рф、スクリプトをテストしたところ、問題はなくなりました。スクリプトを git リポジトリに追加しておいてよかったです。 を実行すると、git diffに diff があることが git で示されましたправительство.рф。 次に、 をdifftool としてセットアップしgit difftoolて、に russian ではなくASCII文字が含まれてvimdiffいることに気付きました。これが問題でした。cправительство.рфc

関連情報