私はbashスクリプトを研究しています。 私は以下のサンプルスクリプトをWebから入手しました。bashスクリプトの文字列比較
#!/bin/bash
str="test"
if [ x$str == x"test" ]; then
echo "hello!"
fi
5行目(x$str
とx"test"
)上のxとは何ですか? 「x
」には特別な意味がありますか?
私はbashスクリプトを研究しています。 私は以下のサンプルスクリプトをWebから入手しました。bashスクリプトの文字列比較
#!/bin/bash
str="test"
if [ x$str == x"test" ]; then
echo "hello!"
fi
5行目(x$str
とx"test"
)上のxとは何ですか? 「x
」には特別な意味がありますか?
例の式の左側が空でないことを確認します。 str
が設定されていない場合は、条件は[ == "test" ]
となり、エラーとなります。
単一の文字を使用して空でないものにする代わりに、変数を二重引用符で囲んでx
を完全にスキップすることもできます([ "$str" == "test" ]
)。
は特別な意味はなく、$str
が空だった場合、その後、
if [ $str == "test" ]
はテストに何の置換につながると、それは次のようになり、この
if [ == "test" ]
ようになります構文エラー。正面にXを追加するとこれが解決されますが、これをこのように引用します。
これをより理解しやすく理解できる方法です。
例は新鮮なbashコンパイルをテストするために使用されたテストケースから取られているようですが、私がprepend xメソッドに見つけた参照だけがメソッドが優れていて、テストケースを変更する必要があるかどうかを議論していました。 – ewanm89
味の問題は何が良いのですか?私はxメソッドをいくつかの場所で見てきましたが、パイプラインや深い代入にコードが読みやすくなる場所があることを確信しています。直感的に理解されており、決して質問を提起しませんでした。 – Soren
ええ、私はそれが私の議論だとは言わなかった、私はそれがGNU bashメーリングリストの主張だと言った。 – ewanm89