Tại sao dấu ngoặc kép làm cho chuỗi chạy như hàm?


-1

Một hàm đơn giản nhận hai đối số và thêm and, sau đó in chúng.

function myprint(){ echo "$1 and $2";}

Nó hoạt động.

myprint  xx  yy
xx and yy

Nó là một chuỗi, bash phân tách nó một cách riêng biệt.

"myprint  xx  yy"
bash: myprint  xx  yy: command not found

Tại sao dấu ngoặc kép làm cho chuỗi chạy như hàm?

""myprint  xx  yy""
xx and yy

Câu trả lời:


3

"Dấu ngoặc kép" của bạn trong thực tế không được lồng nhau. Hai lần một trích dẫn kép được mở và đóng ngay lập tức.

""myprint  xx  yy""
^^                  this is one pair of quotes with empty content
                 ^^ this is anther pair with empty content
  ^^^^^^^^^^^^^^^   this is not quoted at all

Trong thực tế ""myprintlà lệnh có tên: chuỗi rỗng được nối với "myprint", điều này giải quyết myprintchức năng; và đối số cuối cùng là chuỗi "yy" được nối với chuỗi trống.

Vì vậy, bạn nhận được bỏ phiếu myprint xx yy. Toàn bộ lệnh ban đầu hành xử như vậy.

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.