Ввод Bash в той же строке

Согласно открытой группе 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-совместимый сценарий.

Справочный ответ:

2
02.06.2015, 07:48
0 ответов

Теги

Похожие вопросы