Thử:
my_command || { echo 'my_command failed' ; exit 1; }
Bốn thay đổi:
- Thay đổi
&&thành||
- Sử dụng
{ }thay thế( )
- Giới thiệu
;sau exitvà
- không gian sau
{và trước}
Vì bạn muốn in thông báo và chỉ thoát khi lệnh thất bại (thoát với giá trị khác không), bạn cần ||không phải là một &&.
cmd1 && cmd2
sẽ chạy cmd2khi cmd1thành công (giá trị thoát 0). Trong khi
cmd1 || cmd2
sẽ chạy cmd2khi cmd1không thành công (giá trị thoát khác không).
Việc sử dụng ( )làm cho lệnh bên trong chúng chạy trong lớp vỏ phụ và gọi exittừ đó khiến bạn thoát khỏi lớp vỏ phụ chứ không phải lớp vỏ ban đầu của bạn, do đó việc thực thi tiếp tục trong lớp vỏ ban đầu của bạn.
Để khắc phục việc sử dụng này { }
Hai thay đổi cuối cùng được yêu cầu bởi bash.