Подробный вывод оболочки script
У меня очень простая оболочка script, которая выглядит следующим образом:
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.
Однако при выполнении этого script он выглядит следующим образом:
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
Есть ли способ сделать это? Спасибо!
Ответы
Ответ 1
Вы не говорите, какую оболочку вы используете. Если вы используете sh/bash, попробуйте
sh -x script_name
запустить ваш скрипт в режиме подробного/отладочного. Это выведет на экран все команды, которые вы выполняете, значения переменных и т.д. Вы не хотите делать это обычно, так как это даст тонну выходных данных, но полезно выяснить, что происходит.
Как отмечено в комментариях, вы можете добавить этот флаг к вашему вызову #!/bin/bash
в вашем скрипте.
Ответ 2
простой способ:
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
Ответ 3
Они продемонстрируют "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
Ответ 4
let I=-20
while [ $I -lt 20 ]; do
echo "Nice value is $I"
nice -n $I ./app1
let I=$I+1
done