Используя find
в сочетании с pwd
прекрасный ответ, но он создает две подоболочки и не необходим. Существует команда, которая сделает то, что Вы хотите:
readlink -f .htaccess
$ cd /tmp && touch foo
$ ls ./foo
./foo
$ readlink -f ./foo
/tmp/foo
Вероятно, что кто-то может представить более изящное решение, но здесь является моим;
#!/bin/bash
count=`./prog status | grep complete | awk '{print $3}' | wc -l`
zero="0"
if [ "$count" -eq "$zero" ]
then echo "all done."
else echo "wait a little more and try again."
fi
Переменная количества является количеством операций копии. Если количество равно нулю, что означает, что нет никакой происходящей операции копии, то сценарий печатает все сделанные, иначе это печатает, ожидают немного больше и попробовали еще раз. Можно изменить строки, содержащие эхо с собственными командами.
Вы могли сделать что-то более простое как это:
[[ -n $(./prog status | awk '/complete/ {print $3}') ]] && echo "foo"
Эта строка только повторит "нечто", если вывод Вашей команды будет пуст.
grep pattern | awk '{commands}'
мог быть сокращен как awk '/pattern/ {commands}'
.
– enzotib
02.02.2012, 17:22
Завершенный, кажется, появляется только в состоянии Copying. Таким образом, это не имеет значения, кто из обоих проверяется.
while ( ./prog status|grep -qw complete 2>/dev/null )
do
echo Waiting one hour for copy to complete.
sleep 3600
# or exit if you like to
done
# Synced, do whatever is to be done
grep -c complete
мог занять местоgrep|awk|wc
конвейер. – enzotib 02.02.2012, 16:39