2016-11-17 2 views
3

У меня есть цикл написан в сценарии, как так:Передача переменной в SED внутри для цикла

for((i=0;i<${#hours[@]})); do 
    dates=("$(last | egrep -v "reboot|wtmp|^$" | sort | tr -s " " | sed "$i q;d" | cut -f5-7 -d' ')") 
done 

Если я просто выполнить команду, назначенную dates в терминале, заменяя $i (внутри SED команды) числом (0,1,2 ...), он возвращает мне именно то, что я хочу, например, Nov 15 23:15.

Однако, если внутри цикла for, у меня, похоже, проблема с командой sed, не увеличивающей $i. Что я делаю не так?

+0

Вы пытаетесь добавить в массив для каждой итерации цикла? –

+0

Я предлагаю заменить 'i = 0' на' i = 1'. – Cyrus

+0

@TomFenech Да, я пытаюсь добавить дату с каждой итерацией. –

ответ

-1

Ваша проблема в том, что вы никогда не меняете i. Вы, вероятно, следует обновить его в третьей части вашего for заявления:

for((i=0;i<${#hours[@]};++i)); do 
#      ^^^ here 
Смежные вопросы