![]() |
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Bash Shell de sh dans un script Shell | saurabh84g | De programmation et de script Shell | 8 | 08-29-2008 06:51 AM |
| différents csh shell bash | ajp7701 | De programmation et de script Shell | 1 | 04-18-2008 05:19 PM |
| c au lieu de shell bash | ajp7701 | De programmation et de script Shell | 0 | 03-18-2008 04:15 PM |
| Bash Shell | BG_JrAdmin | Linux | 1 | 08-07-2006 02:56 PM |
| Shell Bash ... | VijayHegde | De programmation et de script Shell | 2 | 06-06-2006 09:09 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
shell bash tuyauterie
Bonjour à tous,
Je suis nouveau à bash. J'essaie d'obtenir une sous-chaîne d'une variable dans un script shell. Tout en essayant de faire que je reçois le message d'erreur suivant: -------------------------------------------------- ---------------------- OHOME: / aaa / bbb / produit / eee . / t.sh: ligne 6: / aaa / bbb / produit / eee: Aucun fichier ou répertoire Oracle Base: -------------------------------------------------- ---------------------- Voici le code: -------------------------------------------------- ---------------------- #! / bin / sh OHOME \u003d / aaa / bbb / produit / eee echo "OHOME:" $ OHOME O_BASE \u003d echo $ OHOME | awk-F "/" '(for (i \u003d 2; i <\u003d NF; i + +) (if ($ i \u003d\u003d "produit") (exit;) a \u003d a "/" $ i ;)) echo "Base Oracle:" $ O_BASE -------------------------------------------------- ---------------------- Je suis très surpris. Depuis, il ne semble pas aimer "echo $ OHOME" J'ai essayé plusieurs choses, comme enfermés dans des crochets, simple / double de prix, etc j'ai toujours cette erreur. Je n'arrive pas à trouver la syntaxe de l'ouvrage ou de google ![]() Semble très simple, mais je suis bloqué sur ce pendant des heures. Peut-être que les experts ici peut me guider. Voici notre version de Linux: Linux 2.6.9-<name> 67.0.20.ELsmp # 1 SMP Fri Jun 18 12:40:47 EDT 2008 i686 i686 i386 GNU/Linux Rocky. |
|
||||
|
Votre commande des moyens OHOME echo \u003d et si cette cession est en place, exécutez la commande $ OHOME ce qui bien sûr n'est pas une commande valide. Pour capturer la sortie d'une commande, mettez-le dans backticks (ASCII 96, de ne pas droit ordinaire les guillemets): Code:
O_BASE=`echo $OHOME | awk -F"/" '{for(i=2;i<=NF;i++) {if($i=="product"){exit;} a=a"/"$i; }} '`
$ OHOME devrait normalement être entre guillemets, d'apprendre que maintenant, et vous aurez moins de surprises plus tard (même si dans ce cas, il n'a pas vraiment faire une différence). Si votre shell permet $(...) lieu de backticks `...` qui est peut-être plus lisible, bien que nominalement portable à moins de l'héritage Bourne shell. Votre script awk ne semble pas faire quoi que ce soit avec la un partie, si vous voulez capturer, vous devez l'imprimer. Pour enlever tout après la première occurrence de /produit / vous pouvez utiliser la variable de shell mécanisme de substitution: Code:
O_BASE=${OHOME%/product/*}
(Votre script awk de passer le premier volet /aaa, Est-ce intentionnel? Vous pouvez enlever avec une autre variable de substitution, O_BASE \u003d $ (# O_BASE / aaa)) Dernière édition par époque au 08.28.2008 03:56 PM.. Motif: Variable substitution remarques |
|
||||
|
Ahhh .. Merci beaucoup. J'ai oublié le mot de `s lorsque je copié sur HP. Il fonctionne avec deux `` et $(..)
Votre deuxième proposition "O_BASE \u003d $ (OHOME% / produit / *)" fonctionne parfaitement sans que tous les extras. Je ne comprends pas que l'un - la nécessité d'obtenir un bon livre pour apprendre cette syntaxe. Sur la troisième partie, la manière dont ce travail est awk, elle suppose que la partie avant la première barre oblique, comme un domaine: "/ aaa / bbb / produit / eee». Dans celui-ci, aaa est le deuxième champ par awk et bbb est le troisième domaine. Problème résolu. Merci beaucoup pour votre aide. |
|
||||
|
Citation:
Par conséquent, vous devriez plutôt utiliser le style $(...) si vous n'avez pas l'intention d'exécuter le script non, sur AIX ou SunOS / Solaris "sh. |
|
|||||
|
cet Cartes de référence Annexe de l'Advanced Bash Scripting Guide (http://tldp.org/LDP/abs/html/) A été une aubaine pour moi 'cos I ne peut jamais se rappeler la syntaxe correcte pour la chaîne de coupe.
|
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|