$ # Có nghĩa là gì trong vỏ?


25

$#nghĩa là gì trong vỏ?

Tôi có mã như

if [ $# -eq 0 ]
then

Tôi muốn hiểu ý $#nghĩa của nó, nhưng tìm kiếm Google rất tệ khi tìm kiếm những thứ này.


3
Đối với các tìm kiếm có dấu chấm câu, tôi muốn sử dụng Symbolhound.com. Thường tìm thấy những gì tôi cần.
Eric Andres

bạn có thể duyệt hướng dẫn
miracle173

Để tham khảo và SEO tốt hơn: bang, ký hiệu số , sắc nét, U + 0023, & # 35;, ký nhận xét và đô la!
Clément

Câu trả lời:


37

Bạn luôn có thể kiểm tra trang man của shell của bạn. man bashnói:

Special Parameters
   #      Expands to the number of positional parameters in decimal.

Do đó, tập lệnh shell có thể kiểm tra có bao nhiêu tham số được cung cấp với mã như thế này:

if [ "$#" -eq 0 ]; then
  echo "you did not pass any parameter"
fi

@NoName Bạn có thể làm manhầu hết mọi thứ, kể cả manchính nó. Cũng thử aproposmột chút thời gian.
một CVn

@NoName bạn cũng có thể, khi sử dụng HĐH với các công cụ GNU (linux, v.v.) sử dụng infocho trang man hoặc thông tin bổ sung (rất riêng biệt và được ngăn cách) nếu các gói có một số
Olivier Dulac

12

Thực ra,

`$` refer to `value of` and
`#` refer to `number of / total number`

Vì vậy cùng nhau

`$#` refer to `The value of the total number of command line arguments passed.`

Vì vậy, bạn có thể sử dụng $# để kiểm tra số lượng đối số / tham số được truyền như bạn đã làm và xử lý mọi tình huống bất ngờ.

Tương tự, chúng ta có

`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`

v.v.


8

Đó là

  1. số lượng tham số mà tập lệnh đã được gọi

  2. số lượng tham số đã được đặt trong tập lệnh set -- foo bar

  3. (khi được sử dụng trong một hàm) số lượng tham số mà hàm được gọi ( setcũng sẽ hoạt động ở đó).

Điều này được giải thích trong trang bash man trong khối "Thông số đặc biệt".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.