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 exit
và
- 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 cmd2
khi cmd1
thành công (giá trị thoát 0
). Trong khi
cmd1 || cmd2
sẽ chạy cmd2
khi cmd1
khô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 exit
từ đó 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.