Первая часть исходного кода присваивает $ACTION
неправильно , и, что еще хуже, она ошибочно пытается присвоить, прежде чем убедиться, что $FILE
существует. Поэтому измените эти строки:
FILE=/Users/lagot/Documents/BASH-TEST/VALIDATE.txt
ACTION=`cat /Users/lagot/Documents/BASH-TEST/VALIDATE.txt >>/dev/null 2>&1`
until [ -f "$FILE" ]
do
echo "not exist"
sleep 60
done
To:
FILE=/Users/lagot/Documents/BASH-TEST/VALIDATE.txt
until [ -f "$FILE" ]
do
echo "not exist"
sleep 60
done
ACTION=$(<$FILE)
Или (поскольку $(<$FILE)
возвращает код ошибки) на одну строку меньше:
FILE=/Users/lagot/Documents/BASH-TEST/VALIDATE.txt
until { ACTION=$(<$FILE); } 2> /dev/null
do
echo "not exist"
sleep 60
done
После этого остальная часть исходного кода, который проверяет ${ACTION}
, должна работать.
Не путайте перенаправление >>
(добавить в существующий файл или создать, если файл не существует) с >
(перезаписать файл или создать, если файл не существует). Таким образом, такой код echo proceed >> VALIDATE.txt
должен быть echo proceed > VALIDATE.txt
, иначе, если VALIDATE.txt уже существует и содержит «откат» , результатом будет двухстрочный VALIDATE.txt файл:
rollback
proceed