Başka bir programcıdan aldığım bir bash betiğinde, bazı satırların uzunluğu 80 sütunu aştı. Satırın bir sonraki satırda devam ettiğini belirtmek için satıra eklenecek karakter veya şey nedir?
Yanıtlar:
Karakter ters eğik çizgidir \
Gönderen bash kılavuzu :
Ters eğik çizgi karakteri '\' okunan bir sonraki karakter ve satırın devamı için herhangi bir özel anlamı kaldırmak için kullanılabilir.
^M. Sorun, komut dosyasının bana pencereleri kullanan biri tarafından verilmiş olması gibi görünüyor. Hızlı bir dos2unix:) o sabit
Genel olarak, komutun bir sonraki satıra devam etmesi için satırın sonunda ters eğik çizgi kullanabilirsiniz. Bununla birlikte, komutların örtük olarak devam ettiği, yani satırın bir komutu yasal olarak sona erdiremeyen bir belirteçle bittiği durumlar vardır. Bu durumda, kabuk daha fazlasının geldiğini bilir ve ters eğik çizgi atlanabilir. Bazı örnekler:
# In general
$ echo "foo" \
> "bar"
foo bar
# Pipes
$ echo foo |
> cat
foo
# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar
Farklı, ancak ilgili, alıntıların içindeki örtük devamıdır. Bu durumda, ters eğik çizgi olmadan , dizeye yeni bir satır eklemeniz yeterlidir.
$ x="foo
> bar"
$ echo "$x"
foo
bar
Ters eğik çizgi ile mantıksal çizgiyi birden çok mantıksal satıra bölüyorsunuz.
$ x="foo\
> bar"
$ echo "$x"
foobar
[[- ]]ama diğerlerinde, durum, ve ben kurallara dışarı şekil çalışıyorum.
\işi yapar. @ Guillaume'un yanıtı ve @ George'un yorumu bu soruyu açıkça yanıtlıyor. Burada neden The backslash has to be the very last character before the end of line character.bu komutu dikkate aldığımı açıklıyorum :
mysql -uroot \ -hlocalhost
Sonrasında boşluk varsa \satır devamı çalışmayacaktır. Bunun nedeni, \ görünmez satır besleme karakteri değil, boşluk olan bir sonraki karakter için özel anlamı ortadan kaldırmasıdır. Satır besleme karakteri, \bu örnekte olmayan boşluktan sonradır .