Shell szintaxis: Hogyan kell helyesen használni a \ vonalakat? [duplicate]

Erre a kérdésre már itt van válasz :

Megjegyzések

  • A példa nálam működik; mit kapsz?
  • @JeffSchaller Sajnálom, világosabbá tettem. Arra gondolok, hogy bizonyos dolgokra “\” szükség van, másokra azonban nem. Csak tudni akarom a megfelelő használatát. Valamilyen furcsa okból \ a csillagokban nem lehet kiemelni a megjegyzésekben
  • \ kifejezett folytatás; A bash PS2-t ad, ha a parancs még nem fejeződött be. Ez a zűrzavar?
  • Nem vagyok biztos benne, hogy ez elég másolat, legalábbis amint a címben megkérdezték. Bár az OP a & & összefüggésben kérdezi, mégis elég általános, átfogóbb, nem konkrét választ lehet adni erre.

Válasz

Ha az állítás folytatás nélkül helyes lenne, akkor a \. Ezért a következő visszavonás nélkül működik, mivel “nem fejezhet be egy parancsot && -vel:

echo 1 && echo 2 

Itt a visszavágás szükséges:

echo 1 2 3 \ 4 

vagy

echo 1 \ && echo 2 

Egyébként bash az első sor feldolgozása után azonnal végrehajtaná a parancsot, anélkül, hogy megvárná a következőt.

Megjegyzések

  • Tehát " folytatás " az a kifejezés, amelyet kerestem. A Bash kézikönyv ezt elmagyarázza az Idézés szakaszban, így találtam ezt … Most azt mondtad, hogy ' nem zár le egy sort && -vel, és a PS2 parancsot adja meg. Melyek a többi esetek ? Van valahol egy lista a bash kézikönyvben?

Válasz

Az egyik szkriptstílus-irányelv I ” A szakmai életem során egy hatalmas informatikai cégnél szembesültem, arra köteleztem, hogy használjam a számot soronként 80 karakternél hosszabb, kagylóban és behúzással a vonal megszakítása után. Ezenkívül meg kellett szakítanom a vonalat egy cső vagy & & vagy || előtt. Mint:

command1 \ && command2 \ || command3 \ | command4 

A cél az egyértelmű olvashatóság volt.

Megjegyzések

  • én is ezt tettem, mígnem valaki rámutatott, hogy elhagyhatja a \ ha beteszed a & &, || , és | az előző sorban: Még jobb olvashatóság.
  • @ole yup értem, de ha követendő útmutatás van, akkor a kódom nem adja át a ' ellenőrizze, hogy ' ezt megteszem-e
  • +1. Hajlamos vagyok használni a @OleTange által említett stílust (legalábbis hosszú vagy bonyolult parancsok esetén) – de az általad említett stílusnak egyértelmű előnye van, hogy csak magad a vonalat nézve láthatod, hogy ez milyen folytatás. ' t sem az előző sor végére kell néznünk. Szép. ' nem vagyok benne biztos, hogy tetszik-e elég ahhoz, hogy kényszerítsem magam a szokásaim megváltoztatására, de tetszik.
  • Őszintén szólva inkább a && és || a sorok elején. Ahogyan a OR és a AND sorokat az SQL WHERE záradékai sorainak elejére tettem.
  • IMO, óriási előnye van a következetességnek. Ha bizonyos esetekben KÖTELEZŐ használni a ` and in other cases it is optional, I would prefer to use `parancsot, mindenhol a parancsom folytatódik a következő sorban. Egy szkript beolvasásával könnyen elmulaszthatja, hogy egy sor folytatódik, mert && vagy || vagy |. (És ahogy @ErikE mondja, valójában jobban szeretem, ha && és || a következő sorban van).

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük