shell脚本的详细输出

时间:2009-06-05 14:37:14

标签: linux shell

我有一个非常简单的shell脚本,如下所示:

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 个答案:

答案 0 :(得分:53)

你没有说你正在运行什么样的shell。如果你正在使用sh / bash,请尝试

sh -x script_name

以详细/调试模式运行脚本。这会抛弃你执行的所有命令,变量值等。你不想这样做,因为它会提供大量的输出,但是它可以解决正在发生的事情。

如评论中所述,您可以将此标记添加到脚本中的#!/bin/bash调用

答案 1 :(得分:3)

一种简单的方法:

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

答案 2 :(得分:1)

这些将展示'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

答案 3 :(得分:0)

let I=-20
while [ $I -lt 20 ]; do
  echo "Nice value is $I"
  nice -n $I ./app1
  let I=$I+1
done