Làm thế nào để nối một lệnh có điều kiện vào một lệnh đang chạy?


1

Hãy nói rằng tôi có ba lệnh mà tôi chạy như thế này:

a && b && c

Điều này sẽ chạy b sau khi hoàn thành, và csau khi bhoàn thành.

Nếu tôi đã làm điều này:

a && b

Trong khi điều này đang chạy, tôi muốn nối thêm c như một lệnh có điều kiện. Nó có thể được thực hiện?


Đây là Linux hay MacOSX? Nếu nghi ngờ gắn thẻ nó với vỏ được sử dụng.
Bobby

Tôi đang sử dụng OSX, nhưng nó sẽ giống như Linux.
tony_sid

Không, MacOSX là Unix và Linux là Linux. Ngoài ra, có rất nhiều vỏ khác nhau dành cho Linux, có thể cung cấp các giải pháp khác nhau.
Bobby

1
@ BOB Cũng có các shell khác nhau trên OSX, nhưng không có thông tin trái ngược, bashlà một giả định tốt.
Daniel Beck

Câu trả lời:


2

Tôi sẽ làm điều này:

  • a && b
  • nhấn ctrl-Zđể tạm dừng đường ống hiện tại
  • bg 1 để chạy nó trong nền
  • wait %1 && c

waitchờ đợi công việc được chỉ định hoàn thành và trả về trạng thái kết quả của nó, để các hành vi trên a && b && ccó thể có.

Bạn cũng có thể định nghĩa một bí danh hoặc hàm, vd alias bgwait='bg 1 && wait %1'. Sau đó, sau khi nhấn ctrl-Z, tất cả bạn phải gõ là bgwait && c. Hỗ trợ nhiều công việc được để lại như một bài tập cho người đọc.


0

Kết quả của hoạt động cuối cùng được lưu trữ trong $?. 0 có nghĩa là không có lỗi xảy ra, bất cứ điều gì khác là một vấn đề.

Bạn có thể sử dụng nó như thế này

if [ $? -eq 0 ]; then c; fi

Làm cho nó trở thành một chức năng hoặc tương tự trong bạn .bash_profilevà bạn có thể chạy nó thoải mái hơn một chút.


Vậy làm thế nào để tôi gõ lệnh này nếu một chương trình đang chạy? Tôi sẽ mở một thiết bị đầu cuối khác?
tony_sid

@OSXJedi bạn chỉ cần nhập nó (giả sử chương trình hiện đang chạy của bạn không có đầu vào). Nó sẽ được thực thi sau khi chương trình của bạn thoát, không khác với việc gõ nó sau đó, ngoại trừ việc bạn không cần đợi btrước khi rời khỏi máy.
Daniel Beck

-2

Đối với NT, bạn có thể nhập lệnh mới và nhấn ENTER trong khi lệnh hiện tại đang chạy.

Ví dụ,

c: \ blah> thư mục / s

trong đó blah đủ lớn để bạn có thời gian gõ trong khi công cụ cuộn lên màn hình.

bây giờ tất cả những thứ này cuộn trên màn hình

và trong khi nó xuất hiện, gõ mem

sau đó sau khi dir / s hoàn thành, mem sẽ chạy.


Câu hỏi là về các lệnh có điều kiện ( &&).
grawity

Và nó cũng không phải là về Windows.
Bobby

Treo lên. Khi tôi trả lời, anh vẫn chưa nói HĐH là gì. Vì vậy, tôi đã xem nó như một câu hỏi chung và đưa ra câu trả lời về những gì sẽ làm việc cho NT. Và thứ hai. nếu bạn nghĩ về nó, câu trả lời của tôi là đúng với "các lệnh có điều kiện". Chính xác là như vậy. Nếu anh ta chạy một && b và anh ta muốn nó hoạt động như thể anh ta đã thực hiện một && b && c, nhưng anh ta đã không đặt && c vào đó. Anh ấy có thể làm như tôi đã nói. Và nó hoạt động có điều kiện theo cách tương tự. Có phải không?
barlop

2
anh ta có thể có nghĩa là có điều kiện về mặt lệnh trả lại một cái gì đó đúng / sai. nhưng trong trường hợp đó có lẽ anh ta sẽ thấy nếu nó đúng / sai trong khi nó đang chạy (đó là khi anh ta định chạy lệnh bằng mọi cách), và sau đó anh ta sẽ quyết định có chạy lệnh hay không. Tôi nghĩ rằng anh ta có thể chỉ có nghĩa là chạy hết lần này đến lần khác.
barlop

@barlop: Nhưng các thẻ cũng ở đó. Mặc dù, một chút khó hiểu nhưng không bao gồm Windows.
Bobby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.