![数値演算子: if [[ "$#" -ne 1 ]] は常に true を出力し、 --echo "$#" -- 1 を出力します。 [重複]](https://linux33.com/image/143269/%E6%95%B0%E5%80%A4%E6%BC%94%E7%AE%97%E5%AD%90%3A%20if%20%5B%5B%20%22%24%23%22%20-ne%201%20%5D%5D%20%E3%81%AF%E5%B8%B8%E3%81%AB%20true%20%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%97%E3%80%81%20--echo%20%22%24%23%22%20--%201%20%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20%5B%E9%87%8D%E8%A4%87%5D.png)
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 "$@"