2009-06-05 14 views
18

Mam bardzo prosty skrypt, który wygląda następująco:Pełne wyjście skryptu powłoki

clear 

for i in -20 -19 -18 -17 -16 -15 -14 ... 18 19 
do 
echo "Nice value is $i" 
nice -n $i ./app1 
done 

Zasadniczo, chcę uruchomić aplikację ze wszystkimi różnymi wartościami priorytetowymi między -20 a 19. Jednak podczas wykonywania ten skrypt wygląda następująco:

Nice value is -20 
15916233 
Nice value is -19 
5782142 
.... 
Nice value is 19 
5731287 

Ale chciałbym jakąś Pełne wyjście, które jest również druk polecenia w terminalu, tak że wygląda to

Nice value is -20 
nice -n -20 ./app1  
15916233 
Nice value is -19 
nice -n -19 ./app1 
5782142 
.... 
Nice value is 19 
nice -n 19 ./app1 
5731287 

Czy istnieje sposób, aby to zrobić? Dziękuję Ci!

Odpowiedz

43

Nie mówisz, jakiego rodzaju muszle używasz. Jeśli używasz sh/bash, spróbuj

sh -x script_name

aby uruchomić skrypt w trybie gadatliwym/debug. Spowoduje to zrzucenie wszystkich wykonywanych poleceń, wartości zmiennych itp. Nie chcesz tego robić normalnie, ponieważ zapewnia on mnóstwo wydruków, ale warto się dowiedzieć, co się dzieje.

+12

powinny także być w stanie tego dokonać za każdy bieg przez umieszczenie -x w #! linia; tzn. pierwsza linia skryptu będzie: #!/bin/bash -x – PTBNL

+0

, która wygląda dobrze i robi dokładnie to, co chcę. dzięki! –

3

prosty sposób:

for i in -20 -19 -18 -17 -16 -15 -14 ... 18 19 
do 
    echo "Nice value is $i" 
    echo "nice -n $i ./app1" 
    nice -n $i ./app1 
done 
0
let I=-20 
while [ $I -lt 20 ]; do 
    echo "Nice value is $I" 
    nice -n $I ./app1 
    let I=$I+1 
done 
+0

Używam bash, podczas próby uruchomienia kodu pojawia się następujący błąd: [: -lt: unary operator expected –

+0

To tutaj wydaje się robić rzeczy wyczyść dla ((i = -20; i <= 19; i ++)) do echo "Witamy $ i razy" fajne -n ​​$ i ./app1 zrobione –

+0

Przepraszam, pomieszałem górne i małe litery I (szybkie pisanie). Oczywiście wszyscy powinni być tacy sami. Edytowany w celu naprawy. –

1

Będą one wykazać 'eval' i 'Ustaw', aby robić to, co chcesz:

:::::::::::::: 
a.sh 
:::::::::::::: 
#!/bin/sh 

clear 

i=-20 
while [ ${i} -lt 20 ]; do 
    echo "Nice value is $i" 
    cmd="nice -n $i ./app1" 
    echo ${cmd} 
    eval ${cmd} 
    i=`expr ${i} + 1` 
done 

:::::::::::::: 
b.sh 
:::::::::::::: 
#!/bin/sh 

clear 

i=-20 
while [ ${i} -lt 20 ]; do 
    echo "Nice value is $i" 
    set -x 
    nice -n $i ./app1 
    set +x 
    i=`expr ${i} + 1` 
done 
Powiązane problemy