2009-02-11 6 views
5

chciałbym przetłumaczyć następujący skrypt z Linuksa do Windows XP powłoce shellCESJONARIUSZ Win XP wyjście poleceń zmiennej

GPSID=$(awk '/GPSID/ {print $3}' gora.RTK) 
awk -v variable=${GPSID} 'BEGIN {printf "Numer seryjny : " variable,$1}' >>out.txt 

Druga linia została przetłumaczona; problem jest z definiując zmienną, która zawiera wyjście powłoki w oknach :-(

+0

Proszę oznaczyć swoje żądania poprawnie – PierreBdR

+0

Czy naprawdę utknąłeś z DOS (XP Shell)? Jest mocno ograniczony w porównaniu do powłoki Linuksa. Jeśli to możliwe, zdecydowanie polecam używanie jednego z języków skryptowych dostępnych w XP (VBScript lub jscript), jeśli to możliwe. Lub jeszcze lepiej, jeśli to możliwe, zainstalować powershell. Możesz również zainstalować cygwin. – EBGreen

Odpowiedz

0

jak o ...

FOR/F "tokeny = *" %% a W ('echo Hello World') należy ustawiać var = %%

. UWAGA: zastosowanie% a zamiast %% a podczas próby na linii poleceń innego zachować go jako %% a jeśli używasz w pliku wsadowym

Gdzie echo Hello World "jest komenda, której wyjście chcesz przechwycić i "var", to nazwa zmiennej, w której będzie przechowywane dane wyjściowe.

+0

To jest tak blisko, jak będziesz mógł przyjść, ale OP powinien mieć świadomość, że ciągi wielowierszowe nie mogą być przechowywane w wariancie DOS. – EBGreen

1

Jeśli potrzebujesz powtórzyć działanie przez wyjście polecenia, możesz użyć for /f. Coś jak:

for /f "usebackq" %%L in (`awk '/GPSID/ {print $3}' gora.RTK`) do (
    awk 'BEGIN {printf "Numer seryjny : " %%L,$1}' >> out.txt 
) 
+0

Przepraszam, nie jestem biegły w awk, ale mam nadzieję, że wpadniesz na ten pomysł. –

4

ok problemem stała

for /f "tokens=*" %%a in ('awk "/GPSID/ {print $3}" gora.RTK ') do set var=%%a 
awk "BEGIN {printf \"GPSID : \" }" >out.txt 
echo %var% >>out.txt 

Kod ten w zasadzie robi to, co chciałem zrobić.

Jesteś świetny Dzięki !!!!!

Powiązane problemy