2012-02-06 41 views
6

Ai có thể cho tôi biết $* có nghĩa là gì trong tập lệnh bash?

Tôi đã cố gắng tìm kiếm trên Google cho nó, nhưng tôi chỉ tìm thấy khoảng $0, $1 v.v.

Vì vậy, nếu có liên kết cho điều này, được hoan nghênh.

Cảm ơn!

Trả lời

8

Từ trang man:

* Mở rộng đến các tham số vị trí, bắt đầu từ một. Khi mở rộng xảy ra trong dấu ngoặc kép, nó mở rộng thành một từ đơn với giá trị của mỗi thông số được phân tách bằng ký tự đầu tiên của biến đặc biệt IFS. Tức là, "$*" tương đương thành "$1 c $2 c ...", trong đó c là ký tự đầu tiên của giá trị của biến IFS. Nếu IFS không được đặt, các tham số được tách riêng theo khoảng trắng. Nếu IFS là null, các tham số được nối mà không có dấu phân cách xen kẽ.

Vì vậy, nó tương đương với tất cả các thông số vị trí, với ngữ nghĩa hơi khác nhau tùy thuộc vào việc nó có nằm trong dấu ngoặc kép hay không.

3

Đó là tất cả các đối số được truyền cho tập lệnh, ngoại trừ chia nhỏ theo từng từ. Bạn hầu như luôn muốn sử dụng "[email protected]" để thay thế. Và tất cả đều nằm trong trang người đàn ông bash(1).

3

Đó là danh sách các đối số được cung cấp trên dòng lệnh cho tập lệnh. $ 0 sẽ là tên tập lệnh.

1

Đó là chuỗi cách nhau của tất cả các đối số. Ví dụ: nếu $1 là "hello" và $2 là "thế giới", thì $* là "hello world". (Trừ khi $ IFS được đặt, thì đó là một chuỗi $ IFS được tách riêng.)

3

Bạn có thể sử dụng công cụ tìm kiếm tượng trưng để tìm mã mà Google sẽ không tìm kiếm.

Đối với truy vấn click here

+0

Cảm ơn bạn. Nó rất có ích với tôi! – artaxerxe

0

của bạn Nếu bạn thấy $ trong tiền tố với bất cứ điều gì, nó có nghĩa là nó một biến. Giá trị của biến được sử dụng.

Ví dụ:

count=100 
echo $count 
echo "Count Value = $count" 

Output của kịch bản trên:

100 
Count Value = 100 
+0

Mặc dù tuyên bố bạn thực hiện là chính xác, câu hỏi là "$ * có nghĩa là gì? – maninvan