テスト式でパラメータを拡張できますか?

テスト式でパラメータを拡張できますか?

次の式を試してみると、bash奇妙なエラーメッセージが表示されます。

[: -lt: unary operator expected

最初は関数定義です。

some_func () {
  (( 3 + 5 ))
}

そして表現

[ $(some_func) -lt 10 ] && true

-lt問題は、コマンド置換や算術拡張などの混合演算子であると思います。

終了コード$?は2で、メッセージは次のとおりです。an unary op was expected

ベストアンサー1

しなければならない

some_func() {
  echo "$(( 3 + 5 ))"
}
[ "$(some_func)" -lt 10 ]

なぜ失敗したのか

$(some_func)次に展開出力function* (末尾改行減算)、しかし何も出力しません。したがって、テストは

[ -lt 10 ]

最も基本的な形では、テスト[では1〜3個のパラメータを受け入れます。。上記の引数は2つあるため、Bashは最初の引数が単項演算子であると予想します。-ltバイナリなので、エラーメッセージが表示されます。

あなたはそれを持っていますか?拡張子を正しく引用してくださいそして

[ "$(some_func)" -lt 10 ]

テストに空の文字列があるため、エラーは「予測整数式」です。

[ "" -lt 10 ]

そしてそうでなければ特別な状況&& true重複しています。

*拡張は引用されていないので、出力も通過します。噴射そしてファイル名拡張子。デフォルト値が変更されない限り、この$IFS例ではこれらの要素が役割を果たしてはいけません。

おすすめ記事