我有一个非常简单的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
有办法吗?谢谢!
答案 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