$foo
任意の文字列を含むことができるシェル変数と一致するかどうかをテストするために、次の構文が見つかりましたfoo
。
[ "x$foo" = "xfoo" ]
x
プレフィックス with の目的は説明しません。これは$foo
、特別なテスト文字列(たとえば=
、-f
または)が含まれるときに(
発生する可能性のあるエラーを防ぐ試みのようです!
。 GNU情報マニュアルには複合式が含まれていてあいまいさを引き起こす可能性があることが示されているので、-a
私は-o
主に単純な(つまり、非複合的な)ステートメントに興味があります。これに関する追加情報を見つけるのに問題があります。test
私はあまり賢くないことを正直に認めていますが、GNUが予期しない方法で失敗するようにする任意の文字列の例を考案することはできません。
私の質問:
- にパラメータ代替プレフィックスを追加するのはなぜですか
test
? test
予期しない結果をもたらす単純なパラメータ置換(つまりプレフィックス保護なし)を含む単純な(つまり非複合)ステートメントの例はありますか?
test
私は主にLinuxでGNUツールを使用していますが、移植性のために他のプラットフォームでもGNUツールを使用したいと思います。
答え1
> [ -f = -a -a -a ]
bash: [: argument expected
> [ -f = -a -a x ]
しかし:
[ x-f = x-a -a -a ]
それでも動作しません
[ -a ]
とても良いです。