2015-06-12 32 views
5

Tôi đã nói chuyện với một trong những thực tập sinh của tôi vào bữa trưa hôm nay, người hầu như chỉ làm việc ở Makefile trong mùa hè này, và anh ta đã nói rằng anh ta không biết $ (@: H) có nghĩa là gì hay không. Google-fu của tôi đang thất bại với tôi, vì tôi không thể tìm thấy nó ở bất cứ đâu trên web và hy vọng các bạn có thể giúp tôi.

+0

Đó là biến số có tên '@: H' không phải là biến mặc định mà tôi biết. Vì vậy, nên, trừ khi được định nghĩa ở đâu đó, mở rộng đến chuỗi rỗng. Bạn có chắc đó là cú pháp bạn/anh ta thấy không? Và không phải '$ (@ D)' hoặc '$ (@: H = c)' hoặc tương tự? –

+0

Ông tuyên bố đó là những gì ông nhìn thấy. Nếu đó là một biến không phải mặc định, tôi giả định rằng nó đã được định nghĩa ở một nơi khác trong chương trình rồi. Tôi chưa bao giờ chạm vào Làm cho bản thân mình, vì vậy tôi không có manh mối nhỏ. – Swammy

+0

Đó sẽ là một biến khó xử đã được chọn để sử dụng vì nó rất gần với việc sử dụng biến hợp lệ. Trừ khi, tất nhiên, đây không phải là GNU thực hiện và là một số khác làm thay vào đó, nơi đó có nghĩa là một cái gì đó. –

Trả lời

3

Giả sử đây là GNU tạo ra thì đó chỉ là sự mở rộng của biến số @:H (được đặt tên kỳ quặc). Đó không phải là biến mặc định (và không phải là biến có thể được đặt bằng cú pháp gán bình thường) và sẽ là một lựa chọn kỳ lạ cho tên biến để bắt đầu vì nó rất gần với mở rộng biến thực.

Đó là nhiều khả năng rằng đây là đề cập đến BSD làm nơi :H là một modifier biến đó (đoạn trích từ man page):

: H

Thay thế mỗi từ trong biến với tất cả mọi thứ nhưng thành phần cuối cùng.