2012-03-01 28 views
24

Làm cách nào để kiểm tra mã thoát của lệnh thay thế bằng bash nếu gán là biến cục bộ trong một hàm?
Vui lòng xem các ví dụ sau. Thứ hai là nơi tôi muốn kiểm tra mã thoát.
Có ai đó có giải pháp tốt hoặc giải pháp đúng cho việc này không?mã thoát của lệnh thay thế trong việc gán biến cục bộ bash

$ function testing { test="$(return 1)"; echo $?; }; testing 
1 
$ function testing { local test="$(return 1)"; echo $?; }; testing 
0 

Trả lời

31

Nếu bạn nhìn vào các tập tin người đàn ông cho local (mà thực sự chỉ là BASH builtins trang người đàn ông), nó được coi là lệnh riêng của mình, mang đến cho mã trả về 0 khi hoàn tất việc tạo biến cục bộ. Vì vậy, local sẽ ghi đè mã lỗi được thực hiện lần cuối.

Hãy thử điều này:

function testing { local test; test="$(return 1)"; echo $?; }; testing 

EDIT: tôi đã đi trước và thử nó cho bạn, và nó hoạt động.

+0

Cảm ơn, như mọi khi, ngay sau khi tôi đăng câu hỏi của mình, tôi đã tìm thấy câu trả lời cho bản thân mà xuất hiện giống như bạn đề xuất. Tôi chỉ có ít danh tiếng hơn để trả lời các câu hỏi của riêng tôi trước khi 8 giờ trôi qua. Nhưng 'man local' cho tôi trang man page' LOCAL (8postfix) 'manpage, do đó không quá hữu ích. Nhưng tôi tìm thấy nó trên http://mywiki.wooledge.org/BashPitfalls#local_varname.3D.24.28command.29 – Vampire

+0

Một nguồn thông tin khác sẽ là 'man bash'. 'local' được đề cập trong phần" SHELL BUILTIN COMMANDS ". –

+0

Lệnh 'help' trả về tài liệu về các lệnh dựng sẵn. Xem 'help local'. – Eliot

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