あいまいさをテストするために任意の文字列を渡す必要がある場合

あいまいさをテストするために任意の文字列を渡す必要がある場合

$foo任意の文字列を含むことができるシェル変数と一致するかどうかをテストするために、次の構文が見つかりましたfoo

[ "x$foo" = "xfoo" ]

xプレフィックス with の目的は説明しません。これは$foo、特別なテスト文字列(たとえば=-fまたは)が含まれるときに(発生する可能性のあるエラーを防ぐ試みのようです!。 GNU情報マニュアルには複合式が含まれていてあいまいさを引き起こす可能性があることが示されているので、-a私は-o主に単純な(つまり、非複合的な)ステートメントに興味があります。これに関する追加情報を見つけるのに問題があります。test私はあまり賢くないことを正直に認めていますが、GNUが予期しない方法で失敗するようにする任意の文字列の例を考案することはできません。

私の質問:

  1. にパラメータ代替プレフィックスを追加するのはなぜですかtest
  2. test予期しない結果をもたらす単純なパラメータ置換(つまりプレフィックス保護なし)を含む単純な(つまり非複合)ステートメントの例はありますか?

test私は主にLinuxでGNUツールを使用していますが、移植性のために他のプラットフォームでもGNUツールを使用したいと思います。

ベストアンサー1

> [ -f = -a -a -a ]
bash: [: argument expected

> [ -f = -a -a x ]

しかし:

[ x-f = x-a -a -a ]

それでも動作しません

[ -a ]

とても良いです。

おすすめ記事