2014-07-27 26 views
6

Tôi biết khi dấu chấm than kép được in, nó thực hiện lệnh trước đó. Nhưng echo !! đưa ra một số kết quả lạ mà tôi không hiểu. Ví dụ: khi gõ lệnh dưới đây trong tập lệnh bash, nó cũng in ra tiếng vọng như là một phần của đầu raDấu chấm than đôi trong tập lệnh bash

Trả lời

6

Khi bạn sử dụng thay thế lịch sử, trình bao đầu tiên sẽ hiển thị lệnh mà nó sắp thực thi với tất cả các thay thế được hiển thị, và sau đó thực thi nó. Điều này là để bạn có thể thấy lệnh kết quả là gì, để xác nhận rằng đó là những gì bạn mong đợi.

Vì vậy, nếu bạn gõ:

some command 
echo !! 

các !! được thay thế bằng nội dung của lệnh trước đó. Vì vậy, nó hiển thị và sau đó thực hiện

echo some command 
+0

In lại lệnh hiện tại hoặc lệnh trước đó? – Sam

+0

Nó in lệnh mà nó sắp thực hiện. '!!' được thay thế bằng lệnh trước. – Barmar

0

Đó là do mở rộng lịch sử. Trích dẫn nó thay vì:

echo '!!' 
echo \!\! 

Hoặc tắt lịch sử mở rộng:

shopt -u -o histexpand ## Or 
set +H 

Xem History Expansion.

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