次の式を試してみると、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
例ではこれらの要素が役割を果たしてはいけません。