Согласно открытой группе POSIX awk поддерживает BEGIN
, поэтому это можно сделать в awk
:
awk -v MYEND=6 'BEGIN { for(i=1;i<=MYEND;i++) print i }'
Где -v MYEND = 6
будет означать присвоение, как в первом аргументе seq
. Другими словами, это тоже работает:
END=6
for i in `awk -v MYEND=$END 'BEGIN { for(i=1;i<=MYEND;i++) print i }'`; do
echo $i
done
Или даже с тремя переменными (начало, приращение и конец):
S=2
I=2
E=12
for i in `awk -v MYS=$S -v MYI=$I -v MYE=$E 'BEGIN { for(i=MYS;i<=MYE;i+=MYI) print i }'`; do
echo $i
done
Extra Solaris примечание: в Solaris / usr / bin / awk
является несовместимым с POSIX, вам необходимо использовать либо nawk
, либо / usr / xpg4 / bin / awk
в Solaris.
В Solaris вы, вероятно, захотите установить / usr / xpg4 / bin
в начале PATH, если вы используете POSIX-совместимый сценарий.
Справочный ответ: