В вашей реализации есть две проблемы:
- Вы должны использовать один и тот же (абсолютный или относительный) путь в вашем операторе while l oop test
[ ! -f $file ]
и в ваших командах cat и rm ,
Команда cat
ищет файл в текущем рабочем каталоге (pwd
), а ваш оператор while может искать где-то еще, и, следовательно, ваша реализация содержит ошибки и не будет работать как и ожидалось, если ваш pwd
не /home/master/applications/tmp
.
Вам нужно переместить команду cat и команду rm после блока while. Нет смысла присваивать файл, если файл не существует. Я думаю, что вы потеряли эти команды.
Попробуйте это:
file="/home/master/applications/tmp/mydata.txt"
while [ ! -f "$file" ]
do
sleep 1
done
cat $file
rm $file
РЕДАКТИРОВАТЬ
Согласно предложению @Ivan, вы могли бы используйте до вместо while
, поскольку это больше соответствует вашим требованиям.
file="/home/master/applications/tmp/mydata.txt"
until [ -f "$file" ]; do sleep 1; done
cat $file
rm $file