Tôi đã xem mã sau và thấy rằng cả $ # và $ {# @} đều in cùng một giá trị. Ai đó có thể cho tôi biết sự khác biệt giữa hai người là gì?
# length.sh
E_NO_ARGS=65
if [ $# -eq 0 ] # Must have command-line args to demo script.
then
echo "Please invoke this script with one or more command-line arguments."
exit $E_NO_ARGS
fi
var01=abcdEFGH28ij
echo "var01 = ${var01}"
echo "Length of var01 = ${#var01}"
# Now, let's try embedding a space.
var02="abcd EFGH28ij"
echo "var02 = ${var02}"
echo "Length of var02 = ${#var02}"
echo "Number of command-line arguments passed to script = ${#@}"
echo "Number of command-line arguments passed to script = $#"
exit 0
thực tế tôi nghĩ rằng không có sự khác biệt. '$ #' là số đối số dòng lệnh, '$ @' có hiệu quả là một mảng của các đối số dòng lệnh và '$ {# @}' là độ dài của mảng này - chúng phải có cùng giá trị. –
Lưu ý rằng thực tế là '$ {# @}' mở rộng đến số tham số vị trí là một bashism. Tiêu chuẩn POSIX để lại '$ {# @}' và '$ {# *}' không xác định. – chepner