ksh, выполните действие при достижении цикла максимальное значение

Если вы хотите удалить все дубликаты (включая повторяющиеся пустые строки)

awk '{if ($1 in a) next; a[$1]=$0; print}' test.txt

Если вы хотите сохранить повторяющиеся пустые строки

awk '/^$/ {print; next} {if ($1 in a) next; a[$1]=$0; print}' test.txt
1
22.05.2014, 02:40
3 ответа
set --
while [ "$(($#>5))" -eq "-${#status}" ]
do    "test"; ${status:+":"} sleep 3
      set '' "$@"
done

Если вы тестируете дополнением, вы часто можете сделать намного больше с одним тестом.

1
27.01.2020, 23:52

Можно избежать двойного-Проверьте $статус, сделав так:

for i in {1..5}
do
   "doMyTest"                 #it fills a variables "status" (but can unfortunately fails)
   if [ -n "$status" ]; then  #if status is filled then we can leave the loop
      break
   elif [ $i -eq 5 ]; then
       exit 1                 #all the tests failed, exiting
   fi
   sleep 3                    #else wait some time before doing another try
done
0
27.01.2020, 23:52

Мой принятый ответ по SO: Если вы хотите увидеть сбой только тогда, когда все тесты проваливаются? Когда вы можете пропустить другие тесты при успешном выполнении одного из них, вы можете использовать

test1 || sleep 3 && \
   test2 || sleep 3 && \
   test3 || sleep 3 && \
   test4 || sleep 3 && \
   test5 || exit 1
0
27.01.2020, 23:52

Теги

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