2012-02-24 40 views
6

Tôi có lệnh điều khiển Postgres createdb appname_production_master, trả về mã thoát lỗi nếu cơ sở dữ liệu có tên này đã tồn tại.bỏ qua mã thoát lệnh trong linux

Có thể thực hiện lệnh này không trả lại bất kỳ mã thoát nào không?

Trả lời

18

Chỉ cần bỏ qua mã thoát, ví dụ như thế này.

createdb appname_production_master || true 
+3

Nói đúng ra, điều này không bỏ qua các mã xuất cảnh, nhưng nó sử dụng nó trong một biểu thức luôn luôn thành công. –

+1

"<> ||:" là một biểu mẫu khác có vẻ hoạt động, trong đó dấu hai chấm là lệnh rỗng luôn thành công – killthrush

1

Lệnh Unix luôn trả về mã thoát, nhưng bạn không cần trả lời mã thoát.

Khi bạn chạy lệnh $? được đặt thành mã thoát của quy trình. Vì điều này xảy ra cho mọi lệnh, chỉ cần chạy một lệnh khác sau khi lệnh đầu tiên sẽ thay đổi $?.

Ví dụ:

createdb appname_production_master # returns 1, a failure code 
# $? is 1 
/bin/true # always returns 0, success 
# $? is 0 

Dưới đây là một ví dụ khác:

/bin/false # returns false, I assume usually 1 
echo $? # outputs 1 
echo $? # outputs 0, last echo command succeeded 
Các vấn đề liên quan