Подробный вывод сценария оболочки - PullRequest
21 голосов
/ 05 июня 2009

У меня есть очень простой сценарий оболочки, который выглядит следующим образом:

clear

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

По сути, я хочу запустить приложение с различными значениями приоритета от -20 до 19. Однако при выполнении этого скрипта он выглядит следующим образом:

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

Но я хотел бы получить подробный вывод, который также выводит команду на терминал, чтобы она выглядела так

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  

Есть ли способ сделать это? Спасибо!

Ответы [ 4 ]

54 голосов
/ 05 июня 2009

Вы не говорите, какую оболочку вы используете. Если вы используете sh / bash, попробуйте

sh -x script_name

для запуска вашего скрипта в режиме подробного / отладочного. Это выгрузит все команды, которые вы выполняете, значения переменных и т. Д. Вы не хотите делать это нормально, поскольку это даст тонну вывода, но полезно выяснить, что происходит.

Как отмечено в комментариях, вы можете добавить этот флаг к вашему #!/bin/bash вызову в вашем скрипте.

3 голосов
/ 05 июня 2009

простой способ:

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
1 голос
/ 05 июня 2009

Они продемонстрируют 'eval' и 'set', чтобы делать то, что вы хотите:

::::::::::::::
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
0 голосов
/ 05 июня 2009
let I=-20
while [ $I -lt 20 ]; do
  echo "Nice value is $I"
  nice -n $I ./app1
  let I=$I+1
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...