The UNIX and Linux Forums  

Go Back   A UNIX és Linux Forums > Top Fórumok > Shell programozás és Scripting
.
google unix.com



Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
loop probléma kifutónak Shell programozás és Scripting 2 09-23-2008 11:15 AM
A loop probléma mdap Shell programozás és Scripting 3 08-16-2008 02:27 PM
Probléma esetén Loop A megfigyelő Shell programozás és Scripting 2 05-28-2008 03:43 AM
Probléma a while ciklus és az SQL nandajk A UNIX a dummies Kérdések és válaszok 20 05-04-2007 07:19 AM
probléma, míg a hurok mridula Magas szintű Programozás 1 12-11-2005 11:44 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 Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 11-16-2008
dawn_1030 dawn_1030 is offline
Regisztrált felhasználó
  
 

Join Date: Nov 2008
Hozzászólások: 2
Kettős hurok közben probléma

Hi all, van ütközött egy furcsa probléma, míg a kettős hurok. A cél a két while ciklushoz képest Összevetéshez 2 kép, tmplist.txt a referencia fájl a teljes listát a szerverekről. Lásd a mellékelt képen a logikai és kapcsolat input és output.

A 2, míg hurkokon kell keresni a szerverek / test.csv a / tmplist.txt, soronként. Például, keresés első tétel / test.csv server2 a / tmplist.txt kezdve, első sorban a / tmplist.txt (LINENUM \u003d 1), ha nem található, akkor a kimenet "NA", és aztán a következő sort a / tmplist.txt amíg meg nem találja az egyeztetés server2, és frissíti LINENUM egy időben. Különben is folytathatja a keresés a következő szervert KISZOLGÁLÓ3 a / az tmplist.txt vonali -től (mivel az összes kiszolgáló mindig felsorolt alphabatic sorrendben).

A változó LINENUM (mutató a sor-szám) használják, míg a belső hurok. Ez az előre-1 után, ha a feltétel if [$ SERVER \u003d $ refs] Igaz, a növekmény LINENUM majd kitörni, míg a belső hurkot, és továbbra is a külső, míg hurok. Ugyanakkor, miközben a külső loop, minden alkalommal, amikor hurkok és helyébe SERVER COUNT, a LINENUM elindul a kiindulási érték 1 helyett ismét a nő LINENUM származik, míg a belső hurok.


Az alábbiakban azt mutatja, része a programnak a részleteit, miközben 2 hurkokon.
Could anyone help megmagyarázni nekem, hogy mi a baj itt? Ez az első UNIX-hozzárendelés lesz igazán méltányol segítséged!


#! / bin / bash
Type \u003d P2PS
LINENUM \u003d 1

miközben olvasni SERVER COUNT; do

cat tmplist.txt | miközben olvasni LINE; do

Refs \u003d $ (head - $ LINENUM tmplist.txt | tail -1)

if [$ SERVER \u003d $ refs], majd
let LINENUM + +
echo-n "," $ COUNT>> t.csv
törés
vagy
let LINENUM + +
echo-n ", NA">> t.csv
tovább
fi
kész

done <test.csv
Attached Images
File Type: bmp untitled.bmp (177,0 KB, 13 letöltés)
  #2 (permalink)  
Old 11-16-2008
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Helyszín: Ashburn, Virginia
Hozzászólások: 9.125
A belső hurok az al-folyamat. Bármi változás nincs hatással a szülő folyamat. Ez ugyanaz a helyzet

X \u003d 1
bash-c "X \u003d 2"
echo $ x

Mindketten a hurkokat olvasásakor stdin. Minden folyamat csak 1 stdin, így a két hurkokon feltétlenül kell külön folyamatokat.
  #3 (permalink)  
Old 11-16-2008
béna béna creepy cripple is offline
Regisztrált felhasználó
  
 

Join Date: Oct 2008
Hozzászólások: 2
Nincs szükség 2 hurkokon, akkor használja erős unix parancsok szkriptjeidben, mint grep. Ez munka:
Természetesen t.csv előtt ki kell üríteni a végrehajtó a forgatókönyvet.

miközben olvasni LINE
tesz
aux \u003d $ (grep $ line test.csv)
if [[! -Z $ aux]]
majd
echo "$ aux">> t.csv
vagy
echo "NA">> t.csv
fi
done <tmplist.txt
  #4 (permalink)  
Old 11-16-2008
elbrand elbrand is offline
Regisztrált felhasználó
  
 

Join Date: Apr 2008
Helyszín: Wolfenbuettel / Németország
Hozzászólások: 12
Az olvasott belső hurok a subprocess. Minden változó értékeket vagy megváltozott belül a belső hurok nem ismert kívül is. Ha a fájlokat a kis megpróbálják cseréje közben-konstrukció ellen for-loop. Ha nem, tárolására meta-adatokat a belső hurok a fájlokat, hogy azokat kívülről. De ez nem csökkenti a sebességet szépen.
De valójában nem látja szükségét a kettős hurkok. Miért nem grep minden vonal tmplist.txt az első kép?
  #5 (permalink)  
Old 11-16-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderátor
  
 

Join Date: Feb 2007
Hozzászólások: 4.322
A megoldás az awk:
Kód:
awk '
NR==FNR{a[$1]=$2;next}
$0 in a{print $0,a[$0];next}
{print "NA"}
' test.csv tmplist.txt > t.csv
  #6 (permalink)  
Old 11-17-2008
dawn_1030 dawn_1030 is offline
Regisztrált felhasználó
  
 

Join Date: Nov 2008
Hozzászólások: 2
Nagyon köszönöm az Ön válaszait! Igazán erőteljes parancs!
Saját script működik most. Köszönet mindenkinek!
Closed Thread

Könyvjelzõk

Címkék
unix commands

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 11:41 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0