2010-08-27 39 views
7

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ư ở đó?

Trả lời

7

$# đạ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 
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 đủ.

2

$# = 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.

Các vấn đề liên quan