The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 08-28-2008
RockyC123 RockyC123 is offline
Registered User
  
 

Join Date: Feb 2008
Messages: 6
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.
  #2 (permalink)  
Old 08-28-2008
ère era is offline Forum Advisor  
Inutile de Herder Cats (en congé sabbatique)
  
 

Join Date: Mar 2008
Location: / il / est / que / bin / sh
Messages: 3652
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
  #3 (permalink)  
Old 08-28-2008
RockyC123 RockyC123 is offline
Registered User
  
 

Join Date: Feb 2008
Messages: 6
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.
  #4 (permalink)  
Old 08-28-2008
buffoonix buffoonix is offline
Registered User
  
 

Join Date: Mar 2006
Messages: 145
Citation:
J'ai oublié le mot de `s lorsque je copié sur HP. Il fonctionne avec deux `` et $(..)
Oui, parce que le HP-UX est un sh Posix shell. Voir sh-hommeposix pour en savoir plus sur ses capacités.
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.
  #5 (permalink)  
Old 08-28-2008
wempy's Avatar
wempy wempy is offline
Registered User
  
 

Date d'inscription: juin 2006
Lieu: Harpenden, Royaume-Uni
Messages: 208
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.
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 02:43 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0