2011-12-18 30 views

Trả lời

9

Bạn sẽ có được hiệu ứng tương tự.

Các $() được khuyến nghị vì nó dễ đọc hơn và giúp dễ dàng làm tổ một $() thành một $() khác.

Cập nhật:

Cú pháp $() là một 1003.1 tiêu chuẩn POSIX (2004 edition). Tuy nhiên, trên một số hệ thống UNIX cũ hơn (SunOS, HP-UX, vv), /bin/sh không hiểu nó.

Bạn có thể cần phải sử dụng backtick "` "thay vào đó hoặc sử dụng một trình bao khác (thường là ksh) nếu bạn cần tập lệnh của bạn để làm việc trên môi trường như vậy.

Nếu bạn không biết sử dụng cú pháp nào - hãy sử dụng $(). Cú pháp backtick không được chấp nhận.

+0

@samus: $() thực sự là POSIX (1003.2 tôi nghĩ), nhưng nó sẽ không hoạt động trên UNIX cũ. Hãy tin tôi - Tôi sử dụng chúng hàng ngày. –

+0

nhưng đó là điểm, khi chúng ta nói về tính di động, chúng tôi có nghĩa là POSIX vì nó là tiêu chuẩn hiện tại được hỗ trợ bởi hầu hết các nền tảng, nếu bạn có yêu cầu cụ thể vượt quá điều này thì đó là một trường hợp cụ thể. –

+0

@samus: Bằng "di động nhiều hơn", tôi có nghĩa là "hoạt động trên nhiều hệ điều hành" không "tương thích với chuẩn POSIX mới hơn". –

3

Có một cách khác để khởi tạo biến thành mặc định nếu bạn chưa tự khởi tạo biến đó.

[jaypal:~/Temp] a="I have initialized var a" 
[jaypal:~/Temp] echo ${a:="Default value"} 
I have initialized var a 
[jaypal:~/Temp] a= 
[jaypal:~/Temp] echo ${a:="Default value"} 
Default value 
+0

Vì vậy, toán tử đó đọc giá trị mới của biến và xuất ra giá trị cũ. :) –

+2

Nó thường được sử dụng khi bạn truyền các giá trị cho tập lệnh của bạn dưới dạng '$ 1',' $ 2' và giúp tập lệnh của bạn chạy ngay cả khi các giá trị đó không được chuyển một cách rõ ràng. Bằng cách này, bạn có thể ngầm đặt các biến của mình để chạy trên các giá trị mặc định nếu một giá trị chưa được gán cho chúng. Điều này tiết kiệm khoảng 4-5 dòng mã mà bạn kiểm tra nếu biến đã được gán hay không, cái gì đó giống như 'if [-z" $ var "] sau đó; … ' –

+0

Tôi tin rằng, chúng tôi có thể sử dụng, echo $ {a: =" Giá trị mặc định "} hoặc echo $ {a: -" Giá trị mặc định "} – Indrajeet

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