Pertanyaan Bagaimana cara melewati evaluasi ampersand di command line?


Saat memasukkan URL Arah Google Maps ke dalam baris perintah (untuk membuka dengan peramban kromium melalui Terminal) ada tanda dan (&) di URL, namun terminal istirahat di sana karena barang-barang Unix menjadi barang-barang Unix. Apakah ada sesuatu yang bisa saya ketik ke terminal bahwa ketika perintah benar-benar berjalan, itu akan diperlakukan seperti ampersand?

Will; amp; kerja?


12
2018-06-28 06:18


asal




Jawaban:


Anda harus memasukkan alamat dalam tanda kutip:

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

12
2018-06-28 06:21



Oke, saya punya kutipan di bagian akhir, tapi bukan yang di depan ... yang menjelaskannya. Terima kasih. - Leron


Kutipan akan memperbaiki ini tetapi Anda juga dapat menghindari hal-hal dengan back-slash:

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

Tidak mengatakan ini lebih baik, dengan cara apapun, itu hanya pilihan lain untuk situasi seperti ini.


7
2018-06-28 09:37





Ini tidak akan benar-benar penting dalam hal ini, tetapi ada perbedaan antara tanda kutip tunggal dan tanda kutip ganda.

Kutipan ganda akan menggantikan karakter khusus seperti '$' dan kutipan, sedangkan tanda kutip tunggal memperlakukan semuanya secara harfiah, kecuali untuk kutipan tunggal penutup.

Keduanya akan mengelompokkan teks bersama, yang menyebabkan kromium memperlakukannya sebagai argumen tunggal, dan karakter seperti "; # &" tidak memiliki arti khusus dalam konteks itu.

Ini menunjukkan penggunaan '\' untuk melarikan diri dari kutipan ganda dalam tanda kutip ganda, dan backslash itu sendiri:

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

Dengan tanda kutip tunggal tidak ada yang berubah:

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

Tanpa tanda kutip, '&' membaginya menjadi dua perintah:

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

Biasanya ketika berhadapan dengan satu jenis kutipan, Anda dapat membungkusnya dalam jenis lain, tetapi Anda mungkin mengalami masalah dengan ini:

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

Tanda kutip tunggal tidak diganti, tetapi '$' adalah. Sintaks berikut berfungsi:

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

1
2017-07-01 19:57