Baqqada Echo yeni xətt tam yazır

Bəşdə, aşağıdakıları sınamışdı:

 echo -e "hello\nworld" 

Ancaq yeni bir xətt çəkmir, yalnız \n . Yeni bir xəttimi necə çap edə bilərəm?

Ubuntu 11.04 istifadə edirəm.

1695
12 дек. 12 dekabrda Sergey tərəfindən təyin olundu . 2011-12-12 00:01 '11 at 0:01 2011-12-12 00:01
@ 18 cavab

printf əvəzinə istifadə edə bilərsiniz

 printf "hello\nworld\n" 

printf daha çox tutarlı davranışa malikdir. echo davranışı müxtəlif versiyalar arasında çox dəyişir.

2077
12 дек. cavab cf 12 dekabr verilir . 2011-12-12 00:04 '11 saat 12:04 'da 2011-12-12 00:04

Baş olduğunuza əminsiniz? Mənim üçün hər üç yolla işləyir:

border=0
 echo -e "Hello\nworld" echo -e 'Hello\nworld' echo Hello$'\n'world 
1358
12 дек. Cavab 12 dekabr. 2011-12-12 00:04 '11 saat 12:04 'da 2011-12-12 00:04
 echo $'hello\nworld' 

təzyiqlər

ANSI C Quoting : 

$' string ' kimi sözlər xüsusi hesab olunur. Söz, ANSI C standartına uyğun olaraq əvəzlənmiş qaçışlar ilə dizəyə genişlənir.

443
02 нояб. Cavab Vanuan 02 noyabr tarixində verilir. 2012-11-02 12:39 '12 at 12:39 2012-11-02 12:39

Həmişə echo "" edə bilərsiniz echo "" .

məsələn.

 echo "Hello" echo "" echo "World" 
101
01 марта '14 в 1:14 2014-03-01 01:14 cavab Nayeem Zen Mart 01 '14 'də 1:14 2014-03-01 01:14 ' də verilir

Təsadüfi bir vəziyyətdə, kimsənin başını divarına vurduğunu gördükdə, script çalışanın yeni xəttləri niyə çap etməyəcəyini anlamağa çalışarkən, bunu diqqətə çəkin →

 #!/bin/bash function GET_RECORDS() { echo -e "starting\n the process"; } echo $(GET_RECORDS); 

Yuxarıdakı nümunədə olduğu kimi, metodun özü də özünün üsulu özündə ola biləcək hər hansı əks-sədaları əvəz edən bir yankıya bükülmüş ola bilər. Şübhəsiz ki, onu qısa müddətə endirdim, anlamaq asan deyildi!

Sonra yoldaşlarınıza funksiyaları yerinə yetirmək üçün ən yaxşı şəkildə aşağıdakı kimi olacaq:

 #!/bin/bash function GET_RECORDS() { echo -e "starting\n the process"; } GET_RECORDS; 
36
08 авг. cavab amerikalı İroq 08 Aug tərəfindən verilir . 2013-08-08 23:15 '13 saat 23:15 'də 2013-08-08 23:15

Denemek

 echo -e "hello\nworld" hello world 

Nano redaktoru üçün mənim üçün çalışdı.

24
05 дек. Cavab Harsha B 05 dekabr. 2017-12-05 14:06 '17 at 2:06 pm 2017-12-05 14:06

Bu kolxozda mənim üçün işləyir,

echo -e "hello\\nworld"

18
19 апр. Cavab 19 Martda Sathesh tərəfindən verilir 2014-04-19 22:05 '14 saat 10:05 'da 2014-04-19 22:05

POSIX 7 echo

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html

-e müəyyən edilmir və tirinqlər tətbiq tərəfindən müəyyən edilir:

Birinci operand -n ise, və ya operatorlardan hər hansı birinin <backslash xarakteri varsa, nəticələr tətbiq tərəfindən müəyyən edilir.

Əlavə bir XSI uzantısı yoxdursa.

Buna görə printf istifadə edin:

Format operatoru

XBD Format Format nişanında təsvir edilən bir format dizesi olaraq istifadə edilməlidir [...]

Fayl formatı qeydləri :

\ n <newline> Yazdırılma mövqeyini növbəti xəttin başlanğıcına keçir.

Ayrıca Ubuntu 15.10 və ən çox distros kimi echo tətbiq unutmayın:

  • bir bas inline: help echo
  • bağımsız yürütülebilir fayl: which echo

bəzi qarışıqlıqlara səbəb ola bilər.

15
22 янв. Ciro Santilli tərəfindən verilmiş cavab 改造 改造 中心 六四 事件 tövdəsi Jan 22 2016-01-22 16:23 '16 saat 16:23 'da 2016-01-22 16:23
 str='hello\nworld' $ echo | sed "i$str" hello world 
15
23 нояб. Cavab alinsoar 23 noyabr. 2012-11-23 14:10 '12 at 2:10 pm 2012-11-23 14:10

Buradakı başqa bir giriş bu həllərdən heç kimə kömək etməyənlərə aiddir və onların funksiyasından qaynaq dəyərini almalıdır:

 function foo() { local v="Dimi"; local s=""; ..... s+="Some message here $v $1\n" ..... echo $s } r=$(foo "my message"); echo -e $r; 

Yalnız bu hiylə Linux-da işləmiş və bu bash ilə işləmişəm:

 GNU bash, version 2.2.25(1)-release (x86_64-redhat-linux-gnu) 

Buna bənzər bir problem olan kimsə kömək edir.

4
31 янв. Cavab 31 yanvar DNT verilir . 2014-01-31 17:20 '14 saat 17:20 'də 2014-01-31 17:20

Mənim skriptim:

 echo "WARNINGS: $warningsFound WARNINGS FOUND:\n$warningStrings 

Nəticə:

 WARNING : 2 WARNINGS FOUND:\nWarning, found the following local orphaned signature file: 

Mənim bash skriptimdə, çalışdığım qədər qəzəbləndim:

 echo "WARNING : $warningsFound WARNINGS FOUND: $warningStrings" 

Bu atlamanı yerləşdirmək istədiyiniz yerdə Enter düyməsini basın. Nəticə:

 WARNING : 2 WARNINGS FOUND: Warning, found the following local orphaned signature file: 
3
14 мая '14 в 11:58 2014-05-14 11:58 cavab TanisDLJ tərəfindən 14 may 14: 14-da saat 11:58 2014-05-14 11:58

Bunu etmək daha yaxşıdır

 x="\n" echo -ne $x 
Seçim

- qaçmaq üçün arxa tərəfləri şərh edəcəyəm
-n çıxış faylında son xəttini qaldırır.

PS: yankı əmri həmişə çıxış faylının son xəttini əhatə edən effektə malikdir, belə ki, bu işi aradan qaldırmaq üçün tələb olunur (və daha az qarışıqlıq yarada)

2
30 мая '17 в 10:00 2017-05-30 10:00 Cavab Dhwanit tərəfindən May 30, '17, saat 10:00 'də 2017-05-30 10:00' də verilir

Siz həmçinin əyri braces ilə yankıları istifadə edə bilərsiniz,

 $ (echo hello; echo world) hello world 
2
05 мая '14 в 12:32 2014-05-05 12:32 Cavab verilir Avinash Raj 05 May '14 da 12:32 2014-05-05 12:32

Bu cavabda heç bir təklif ala bilmədim, çünki çıxdığım kimi dəyərini qaytaran bir funksiyadan istifadə etməyə çalışdım və bu funksiyadakı bütün mesajlar eko (və printf) yeni xətləri fərdi olaraq sildikdən sonra qaytarma dəyərinə əlavə edildi xətləri.

Bununla əlaqədar bir sual, çox dəqiq bir cavabla:

Bir dəyəri qaytaran bir bash funksiyasını və bir dəyişənə yeni xarakterli simvollar əlavə etmək üçün necə debug etmək olar?

Üç saatlıq gizli tur kimi idi.

1
03 дек. Cavab aliteralmind 03 Dek 2017-12-03 06:00 '17 saat 06:00 'da 2017-12-03 06:00 ' a qədər

Ayrıca edə bilərsiniz:

 echo "hello world" 

Bu mənim üçün macOS-da işləyir.

1
31 авг. Cavab vinzee 31 avqust verilir . 2018-08-31 10:40 '18 saat 10:40 'da 2018-08-31 10:40

Bəzən bir məkandan ayrılan bir çox xətt keçə bilər və \n kimi şərh ediləcək.

Məsələn, çox satırlı bildirişlər üçün kabuk skriptini istifadə edərkən:

 #!/bin/bash notify-send 'notification success' 'another line' 'time now ''date +"%s"' 
0
26 мая '18 в 10:14 2018-05-26 10:14 Hunter Frazier tərəfindən 26 May '18' də saat 10:14 ' də verilən cavab 2018-05-26 10:14

CentOS-da bu mənim üçün çalışır:

 echo -e ""hello\nworld"" 
0
17 авг. 17 Avqustda vanishedzhou cavab verildi 2018-08-17 06:56 '18 saat 06:56 'da 2018-08-17 06:56

Qaçış sıralarını şərh edən bash 4.4 versiyasına yeni bir parametr əlavə edilmişdir :

${parameter@operator} - E operator

Bir uzantı, bir parametrenin dəyərini tirajı olan, $'…' tiraj mexanizmi kimi qaçış vernikli sekanslarla təmsil edən bir simvoldur.

 $ foo='hello\nworld' $ echo "${foo@E}" hello world 
0
23 июля '18 в 22:54 2018-07-23 22:54 Cavab Pesa tərəfindən verilir 23 iyul '18, saat 10:54 'da 2018-07-23 22:54

bağlı digər suallar və ya bir sual