Dalam skrip bash yang saya dapatkan dari programmer lain, beberapa baris melebihi 80 kolom. Karakter atau benda apa yang akan ditambahkan ke baris untuk menunjukkan bahwa baris tersebut berlanjut ke baris berikutnya?
Dalam skrip bash yang saya dapatkan dari programmer lain, beberapa baris melebihi 80 kolom. Karakter atau benda apa yang akan ditambahkan ke baris untuk menunjukkan bahwa baris tersebut berlanjut ke baris berikutnya?
Jawaban:
Karakternya adalah garis miring terbalik \
Dari manual bash :
Karakter garis miring terbalik '\' dapat digunakan untuk menghilangkan arti khusus untuk pembacaan karakter berikutnya dan untuk kelanjutan baris.
^M. Masalahnya tampaknya skrip itu diberikan kepada saya oleh seseorang yang menggunakan windows. A quick dos2unixfix it :)
Secara umum, Anda dapat menggunakan garis miring terbalik di akhir baris agar perintah dapat dilanjutkan ke baris berikutnya. Namun, ada kasus di mana perintah dilanjutkan secara implisit, yaitu ketika baris diakhiri dengan token daripada tidak dapat menghentikan perintah secara legal. Dalam hal ini, shell tahu bahwa akan datang lebih banyak, dan garis miring terbalik dapat dihilangkan. Beberapa contoh:
# In general
$ echo "foo" \
> "bar"
foo bar
# Pipes
$ echo foo |
> cat
foo
# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar
Berbeda, tetapi terkait, adalah kelanjutan implisit di dalam tanda kutip. Dalam kasus ini, tanpa garis miring terbalik, Anda cukup menambahkan baris baru ke string.
$ x="foo
> bar"
$ echo "$x"
foo
bar
Dengan garis miring terbalik, Anda sekali lagi memisahkan baris logika menjadi beberapa baris logika.
$ x="foo\
> bar"
$ echo "$x"
foobar
[[- ]]tetapi tidak dalam kondisi lain, dan saya mencoba untuk mencari tahu aturannya.
\melakukan pekerjaan itu. Jawaban @ Guillaume dan komentar @ George dengan jelas menjawab pertanyaan ini. Di sini saya menjelaskan mengapa The backslash has to be the very last character before the end of line character.Pertimbangkan perintah ini:
mysql -uroot \ -host
Jika ada spasi setelahnya \, kelanjutan baris tidak akan berfungsi. Alasannya adalah \ menghilangkan makna khusus untuk karakter berikutnya yang merupakan spasi bukan karakter feed baris yang tidak terlihat. Karakter baris feed setelah spasi bukan \dalam contoh ini.