Попробовать info coreutils 'who invocation'
:
`-u'
After the login time, print the number of hours and minutes that
the user has been idle. `.' means the user was active in the last
minute. `old' means the user has been idle for more than 24 hours.
информационная документация инструментов GNU обычно - намного больше завершенное, чем страницы справочника.
Можно использовать простое для цикла с Bash, Zsh или Ksh93. Следующие работы только начиная с версии 4 (2009) Bash, zsh 4.3.10 (2010) и ksh93r (2006) (хотя {x..y}
синтаксис, порожденный в zsh
(в 2.6-beta4
в 1995)).
#!/bin/bash
# since Bash v4
for i in {10..100..10}
do
$path_of_prog/prog $i
done
{$start..$end..$step}
часть говорит это $i
в запуске, равном $start
и $i
перейдет в $end
. $step
сумма с который $i
будет увеличен каждый шаг. Таким образом, мы получаем значения 10 20 30 ... 100
для $i
.
Вы могли также записать все это в одной строке с
for i in {10..100..10}; do ./prog $i; done
Если у Вас есть более старый Bash и GNU seq
доступно, используйте следующие строки
#!/bin/bash
#only for pre Bash v4
for i in $(seq 10 10 100)
do
$path_of_prog/prog $i
done
или как один лайнер
for i in $(seq 10 10 100);do ./prog $i; done
(вышеупомянутое предполагает, что Вы не изменили $IFS
переменная).
Вопрос отмечен bash
, это только в пользу пользователей других оболочек.
В POSIX sh сценарий (для мобильности):
i=10
while [ "$i" -le 100 ]; do
./prog "$i"
i=$(($i+10))
done
В Границе sh сценарий (для совместимости к системам пред90-х):
echo '0[10+pd100>x]dsxx' | dc | xargs -n 1 ./prog
В zsh
(для людей, не вынужденных использовать bash
):
i=0; repeat 10 ./prog $((i+=10))
Или
for i ({1..10}0) ./prog $i
или:
for ((i=10;i<=100;i+=10)) ./prog $i
или:
zargs -n1 {1..10}0 -- ./prog
Есть много способов заставить printf делать это за вас, но вот лишь пара:
printf ' ./prog %d0\n' 1 2 3 | sh
Или, может быть, вы хотите, чтобы программа действительно запускалась 30 раз. seq
uence и printf
очень хорошо подходят для этой цели:
printf ' ./prog %d\n' `seq 1 30` | sh
Или, может быть, результаты вашей команды включают какое-то значение переменной, которым вы не хотите жертвовать. дальняя сторона трубы. Хорошо.: [
. <<CMD /dev/fd/0
$(printf './prog %d0\n' 1 2 3 )
CMD
] Возможно, вам не нужны числа, но вам нужно столько копий строки, или, может быть, нужно повторить только часть команды, но другие части статичны:
. <<CMD /dev/fd/0
$( { printf 'echo "this is part 1" >&2| ' ;\
printf 'echo "these are parts %d" >&2 | ' `seq 1 5` ; })
CMD
printf 'this string is repeated for each of printfs args,
but the args are not included%.0b\n' `seq 1 5`