Làm thế nào để bỏ qua việc đánh giá ampersand trong dòng lệnh?


13

Khi nhập URL Chỉ đường của Google Maps vào dòng lệnh (để mở bằng trình duyệt crom qua Terminal), có một ký hiệu ( &) trong URL, tuy nhiên, thiết bị đầu cuối sẽ phá vỡ nó vì thứ Unix là thứ Unix. Có một cái gì đó tôi có thể gõ vào thiết bị đầu cuối mà khi lệnh thực sự đi qua, nó sẽ được xử lý như một dấu và?

Ý chí; amp; công việc?

Câu trả lời:


15

Bạn cần đặt địa chỉ trong dấu ngoặc kép:

chromium-browser 'http://whatever.com/?x=1&y=2'

Được rồi, tôi đã có trích dẫn ở cuối, nhưng không phải là ở phía trước ... điều đó giải thích nó. Cảm ơn bạn.
Leron

7

Báo giá sẽ khắc phục điều này nhưng bạn cũng có thể thoát khỏi mọi thứ bằng dấu gạch chéo ngược:

echo http://whatever.com/?x=1\&y=2

Dù không nói điều này tốt hơn, nhưng đây chỉ là một lựa chọn khác cho những tình huống như thế này.


1

Nó thực sự không quan trọng trong trường hợp này, nhưng có một sự khác biệt giữa dấu ngoặc đơn và dấu ngoặc kép.

Dấu ngoặc kép sẽ thay thế các ký tự đặc biệt như '$' và dấu ngoặc kép, trong khi dấu ngoặc đơn xử lý mọi thứ theo nghĩa đen, ngoại trừ dấu ngoặc đơn đóng.

Cả hai sẽ nhóm văn bản lại với nhau, điều này khiến crom coi nó là một đối số duy nhất và các ký tự như "; # &" không có ý nghĩa đặc biệt trong ngữ cảnh đó.

Điều này cho thấy việc sử dụng '\' để thoát một trích dẫn kép trong dấu ngoặc kép và chính dấu gạch chéo ngược:

mat@sen:~$ echo "a&bc\\#de\"f"
a&bc\#de"f

Với dấu ngoặc đơn không có gì thay đổi:

mat@sen:~$ echo 'a&bc\\#de\"f'
a&bc\\#de\"f

Nếu không có dấu ngoặc kép, '&' sẽ chia nó thành hai lệnh:

mat@sen:~$ echo a&bc\\#de\"f
[1] 2619
a
bc\#de"f: command not found
[1]+  Done                    echo a
[1]+  Done                    echo a

Thông thường khi xử lý một loại trích dẫn, bạn chỉ có thể gói nó trong loại khác, nhưng bạn có thể gặp vấn đề với điều này:

mat@sen:~$ echo "'a'bc$foo"
'a'bc

Các trích dẫn duy nhất không được thay thế, nhưng '$' là. Cú pháp sau đây hoạt động mặc dù:

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
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.