数値演算子: if [[ "$#" -ne 1 ]] は常に true を出力し、 --echo "$#" -- 1 を出力します。 [重複]

数値演算子: if [[ "$#" -ne 1 ]] は常に true を出力し、 --echo "$#" -- 1 を出力します。 [重複]

success位置パラメータの数が1のときに出力しようとしますが、そうでなければエラーが発生します。

#!/usr/bin/env bash

foo() {
  if [[ "$#" -ne 1 ]]
  then echo "error"
  else
    echo "success"
  fi
}
foo

コマンドを使用してスクリプトを実行します./my_script 1。コマンドを使用してもerrorスクリプトを実行しても、出力は常にです。./my_script 1./my_script 1 2

出力./my_script 1を期待した成功

答え1

ありがとう新しい質問を投稿!使用されるコードを見ると、明確な画像が得られます。

スクリプト全体にパラメータを渡しましたが、いいえ機能パラメータfoo

欲しいならスクリプト関数内のパラメータを渡します。

foo() {
  if [[ "$#" -ne 1 ]]
  then echo "error"
  else
    echo "success"
  fi
}
foo "$@"

関連情報