Проверьте столбцы с помощью awk
и выйдите с некоторым номером, если они соответствуют критериям. Затем проверьте код выхода с помощью $?
и выполните свои команды.
awk -F ',' '$2>1{exit 42}' file
[[ "$?" -eq 42 ]] && echo yes || echo no
С оболочкой bash
вы можете сделать что-то вроде:
elapse() (
SECONDS=0
while read -t1; (($? > 128)); do
TZ=UTC0 printf >&2 '\rtime elapse %(%T)T' "$SECONDS"
done
echo >&2
)
{ long-running-command 4>&1 >&3 3>&- | elapse; } 3>&1
Я бы написал функцию секундомера, подобную той, которую я опубликовал здесь , и вызвал бы ее, сообщая ей, что нужно следить за идентификатором процесса команды, которую вы выполняете (обратите внимание, что это предполагает GNUdate
):
#!/bin/bash
stopwatch(){
date1=`date +%s`;
while kill -0 $1 2>/dev/null; do
printf "Elapsed time: %s\r" "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)";
sleep 0.1
done
}
find /path/to/dir > output 2> error &
stopwatch $!
Обратите внимание, что этот подход означает, что если вы завершите сценарий с помощью Ctrl + C , процесс find
продолжит работу в фоновом режиме. Решение Стефана лучше.