Nekem ilyen bash szkriptem van:
rm ~/sqoop/"$TABLE"/* rmdir ~/sqoop/"$TABLE" return $? 
A végrehajtás után ez a szkript értéket ad vissza a következő folyamathoz, de annak ellenére, hogy a szkript sikeresen fut, és a szkript összes szakaszát sikeresen befejezi, visszatér 1-be.
Mivel ez – a következő folyamat nem zajlik.
Ha eltávolítom a return utasítást, a következő folyamat zökkenőmentesen megy. ez a probléma a Hadoop-fürt fokozatossága után következett be, amely az Ubuntu 14-et és az új fürtöt az Ubuntu 16-mal rendelkezik.
Tudna segíteni abban, hogy megértsük, mi a probléma, és hogyan működik a következő folyamat sikeresen, ha eltávolítja a return parancsot itt és mi a hatás a termelésben, ha eltávolítja a Return utasítást?
Megjegyzések
- mi a következő lépés? mit ellenőriz a következő lépés?
 - A következő a HQL (Hive lekérdezés a Hadoopban), és van néhány üzleti lépése, amelyek futnak, ha megjegyzem a visszatérési értéket, amely jól működik, de nem fut, ha megjegyzést ír Visszatérés. ' nem változtat semmit az üzleti logikán / shell szkripten, az egyetlen dolog, amit megtettünk, az a frissítés
 
Válasz
 A return utasítás hibát ad, ha a parancsot nem egy függvény hajtja végre. 
 A shell függvényekben használja a return parancsot. A szkriptekben használja az exit parancsot. 
Egy rövid szkript, például a
#!/bin/bash return 0 
, a hibaüzenet
line 1: return: can only `return" from a function or sourced script 
 és a $? értéket 1-re állítja. 
 Ha nem “t ne lépjen ki a szkriptből egy explicit exit paranccsal (vagy ha exit vel lép ki, de kilépési kód megadása nélkül), akkor a a szkript egésze megegyezik az utoljára végrehajtott paranccsal. 
 A exit "$?" birtoklása megegyezik a sima exit, és ha a szkript végén van, akkor ez teljesen kihagyható. 
 Általában azt is javaslom, hogy használja a $HOME helyett tilde a szkriptekben. Ez azért van, mert az $HOME úgy működik, mint bármely más változó, míg a tilde külön bővítési lépésben bővül, ami azt jelenti, hogy nem változóként viselkedik, és hogy nem bővül idézett karakterláncokban . Az $HOME is inkább leíró jellegű, és mivel szkript, néhány extra billentyűleütést elkölthet a kód olvashatóbbá tételéhez. 
Megjegyzések
- Gyors lekérdezésem van a válaszod fölött … megpróbálom a fentieket létező 0-val, de van egy lekérdezésem, hogy miért fordul elő ez a probléma, csak előzőleg használom ugyanazt a lekérdezést? működik, ha visszatérek állítás ez valamilyen hatással van?
 -  @gsrao Ha megjegyzi a 
returnutasítást, akkor a szkript visszatérési kódja megegyezik az utoljára végrehajtott parancs kódjával, szóval itt a te esetedben mindenképpen elhagyhatod. Ezt hozzáadom a válaszomhoz. - Ó .. nagyszerű .. megmented az életemet, tehát az én esetem, ha alapértelmezés szerint megjegyzem a visszatérést A szkript visszaadja az utolsó megjegyzés sikeres megjelölését (rmdir ~ / sqoop / " $ TABLE ") igaz? nekem, ha két egyszerű kérdés, amely az agyamat éli 1) esetem, mit használ a " return $? ", mint ahogy mondtad, ugyanúgy fog működni, ha megjegyzem a " return $ -t " 2) Mi okozhatja a problémát korábban?
 -  @gsrao Igen, ha megjegyzi a 
return(aminek ' nem kell ott lennie, hogy kezdje, mivel ' nincs függvényben, amennyire látom ), a szkript kilépési állapota armdirállapot lesz, ha ez a ' parancs a parancsfájl utolsó parancsának. Ami az utolsó kérdésedet illeti, nem értem ' nagyon, hogy mit értesz a " alatt a kérdéssel korábban ". - Utolsó kérdésem .. ugyanazt a szkriptet használom, mint amit a linux / cluster up gradáció előtt használtam, és a cluster up gradationig működött, miért csak most fordul elő ez a probléma? mi okozhatja ezt a problémát?