に基づいてこれ、私が読んだ他の多くの中で私が理解したのは、これが長さを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の後に空の文字列に展開されます。」(参照)hello
uvar
${var+hello}
hello
var
${uvar+hello}
uvar
標準パラメータ拡張)
また、testを使用して変数が設定されているかどうかをテストするbash
こともできます。-v
if [ -v variable ]; then
echo variable is set
fi
同様に、「設定されているが空の」変数は「設定されていない」変数と同じではありません。文字列(変数の内容)は空にすることはできず、長さがゼロでなくてもかまいません。
他の言語では、文字配列にNULLバイト(\0
)を含めることができます。これは、ヌルバイトで始まり、いくつかのテキスト(他のヌルバイトで終わる)を含む配列がある可能性があることを意味します。これが次のように解釈されるときひも、文字列の長さは0ですが、配列の内容は空ではありません。
ほとんどのシェル(Pythonを除くzsh
)は変数にnullバイトを許可しません。