Tôi thấy
foo() {
if [[ $# -lt 1 ]]; then
return 0
fi
...
}
Chính xác là gì khi so sánh bằng cách sử dụng $ # như ở đó?
Tôi thấy
foo() {
if [[ $# -lt 1 ]]; then
return 0
fi
...
}
Chính xác là gì khi so sánh bằng cách sử dụng $ # như ở đó?
$#
đại diện cho số đối số dòng lệnh được chuyển đến tập lệnh.
sh-3.2$ cat a.sh
echo $# #print the number of cmd line args.
sh-3.2$ ./a.sh
0
sh-3.2$ ./a.sh foo
1
sh-3.2$ ./a.sh foo bar
2
sh-3.2$ ./a.sh foo bar baz
3
Khi sử dụng bên trong một hàm (như trong trường hợp của bạn) nó đại diện cho số của đối số truyền cho hàm:
sh-3.2$ cat a.sh
foo() {
echo $# #print the number of arguments passed to the function.
}
foo 1
foo 1 2
foo 1 2 3
sh-3.2$ ./a.sh
1
2
3
$#
là số đối số được truyền cho tập lệnh. Xem các thông số đặc biệt của phần PARAMETERS của trang bash(1)
để biết danh sách đầy đủ.
$#
= Số lượng đối số được chuyển đến hàm.
trong mã của bạn, hàm sẽ trả về 0 nếu hàm không được gọi với một tham số ít nhất.