長さがゼロで空でない文字列を割り当てる方法

長さがゼロで空でない文字列を割り当てる方法

に基づいてこれ、私が読んだ他の多くの中で私が理解したのは、これが長さを0と0にa=''することです。aしかし、長さがゼロで空でない文字列をどのように生成しますか?それともそんなことないですか?ある程度これはシェルによって異なり、bashで作業しています。

ベストアンサー1

「空の文字列」方法「長さ0の(空)文字列」。たとえば、参照してください。「空文字列」のPOSIX定義。これは、空でない長さがゼロの文字列がないことを意味します。

しかしはいそのようなもの未設定変える

var=''
unset uvar

これで、var上記のコードの実行と実行後の違いがあります。uvarたとえば、${var-hello}is setは空の文字列に展開されvar、その後is unsetは${uvar-hello}拡張されます。同様に、is unsetの後に展開され、is unsetの後に空の文字列に展開されます。」(参照)hellouvar${var+hello}hellovar${uvar+hello}uvar標準パラメータ拡張)

また、testを使用して変数が設定されているかどうかをテストするbashこともできます。-v

if [ -v variable ]; then
    echo variable is set
fi

同様に、「設定されているが空の」変数は「設定されていない」変数と同じではありません。文字列(変数の内容)は空にすることはできず、長さがゼロでなくてもかまいません。

他の言語では、文字配列にNULLバイト(\0)を含めることができます。これは、ヌルバイトで始まり、いくつかのテキスト(他のヌルバイトで終わる)を含む配列がある可能性があることを意味します。これが次のように解釈されるときひも、文字列の長さは0ですが、配列の内容は空ではありません。

ほとんどのシェル(Pythonを除くzsh)は変数にnullバイトを許可しません。

おすすめ記事