Có $#
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.
Có $#
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.
Câu trả lời:
Bạn luôn có thể kiểm tra trang man của shell của bạn. man bash
nó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
man
hầu hết mọi thứ, kể cả man
chính nó. Cũng thử apropos
một chút thời gian.
info
cho 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ố
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.
Đó là
số lượng tham số mà tập lệnh đã được gọi
số lượng tham số đã được đặt trong tập lệnh set -- foo bar
(khi được sử dụng trong một hàm) số lượng tham số mà hàm được gọi ( set
cũ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".