2013-05-03 32 views
6

Tôi cố gắng để hiểu được đoạn mã này:Ý nghĩa của ruột trong Bash sau một ống đôi

. functions.sh || { : ; echo "Error while loading the specified file" >&2; exit 2; } 

tôi nhận được rằng mã trong khung được gọi khi một file nào đó là không có sẵn. Nhưng điều này có nghĩa là gì : ;? Hơn nữa, khi bạn xóa nó, thì tập lệnh sẽ không hoạt động.

Trả lời

16

colon is null statement, vì vậy không có gì. Dấu chấm phẩy ends a list of commands.

Không chắc chắn lý do tại sao mọi người sẽ viết ở trên, về cơ bản là "không làm gì cả, sau đó thực hiện echo" có vẻ như nó có thể được đơn giản hóa. Có thể là hành lý sao chép-dán của ai đó.

+0

Nhưng nếu bạn viết điều này: '. functions.sh || {echo "Lỗi khi tải tệp được chỉ định"> & 2; thoát 2; } 'sau đó nó không hoạt động - lệnh thoát bằng cách nào đó yêu cầu nó tôi đoán. – aa007

+1

Nevermind .. Tôi quên thêm một dấu cách sau ký hiệu {. Cảm ơn rất nhiều! :) – aa007

+11

'do_something || : 'là một thành ngữ có nghĩa là bỏ qua sự thất bại của' do_something' sẽ kết thúc toàn bộ tập lệnh nếu 'set -e' AKA' set -o errexit' được bật. –